Sebagai tambahan untuk jawaban dari dan04, jika Anda ingin memasukkan secara membabi buta NUMERICselain nol yang diwakili oleh a TEXTtetapi pastikan teks tersebut dapat diubah menjadi numerik:
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
Kasus penggunaan umum ada dalam kueri dari program yang memperlakukan semua data sebagai teks (untuk keseragaman & kesederhanaan, karena SQLite sudah melakukannya). Hal yang menyenangkan tentang ini adalah memungkinkan konstruksi seperti ini:
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
yang nyaman jika Anda menggunakan placeholder karena Anda tidak harus menangani bidang numerik bukan nol secara khusus. Contoh menggunakan sqlite3modul Python adalah ,
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
Dalam contoh di atas, semua nilai di str_value_tupleakan di -escape dan dikutip sebagai string saat diteruskan ke SQlite. Namun, karena kami tidak memeriksa secara eksplisit tipe melalui TYPEOFtetapi hanya konvertibilitas ke tipe , ini akan tetap berfungsi seperti yang diinginkan (yaitu, SQLite akan menyimpannya sebagai numerik atau gagal jika tidak).