Jako dodatek do odpowiedzi z dan04, jeśli chcesz na ślepo wstawić NUMERIC
inne niż zero reprezentowane przez a, TEXT
ale upewnij się, że tekst można zamienić na numeryczny:
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
Typowy przypadek użycia to zapytanie z programu, który traktuje wszystkie dane jako tekst (dla jednolitości i prostoty, ponieważ SQLite już to robi). Zaletą tego jest to, że zezwala na takie konstrukcje:
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
co jest wygodne, jeśli używasz symboli zastępczych, ponieważ nie musisz specjalnie obsługiwać takich niezerowych pól numerycznych. Przykładem użycia sqlite3
modułu Pythona byłoby:
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
W powyższym przykładzie wszystkie wartości w str_value_tuple
zostaną zapisane w postaci znaków ucieczki i cytowane jako ciągi po przekazaniu do SQlite. Ponieważ jednak nie sprawdzamy jawnie typu via, TYPEOF
a jedynie konwertowalność na typ , będzie on nadal działał zgodnie z oczekiwaniami (tj. SQLite albo zapisze go jako numeryczny, albo w przeciwnym razie zakończy się niepowodzeniem).