Como um complemento à resposta de dan04, se você deseja inserir cegamente um NUMERICdiferente de zero representado por um, TEXTmas certifique-se de que o texto seja conversível em um numérico:
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
O caso de uso típico é em uma consulta de um programa que trata todos os dados como texto (para uniformidade e simplicidade, uma vez que o SQLite já faz isso). O bom disso é que permite construções como esta:
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
o que é conveniente no caso de você estar usando espaços reservados, porque você não precisa lidar com esses campos numéricos diferentes de zero especialmente. Um exemplo de uso do sqlite3módulo Python seria,
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
No exemplo acima, todos os valores em str_value_tupleterão escape e serão colocados entre aspas como strings quando passados para SQlite. No entanto, como não estamos verificando explicitamente o tipo via, TYPEOFmas apenas a conversibilidade para o tipo , ele ainda funcionará como desejado (ou seja, o SQLite irá armazená-lo como um numérico ou falhará caso contrário).