Như một phần bổ sung cho câu trả lời từ dan04, nếu bạn muốn chèn một cách mù quáng NUMERICkhác với số 0 được đại diện bởi một TEXTnhưng đảm bảo rằng văn bản có thể chuyển đổi thành số:
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
Trường hợp sử dụng điển hình là trong một truy vấn từ một chương trình coi tất cả dữ liệu là văn bản (để đồng nhất và đơn giản, vì SQLite đã làm như vậy). Điều thú vị về điều này là nó cho phép các cấu trúc như thế này:
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
điều này thuận tiện trong trường hợp bạn đang sử dụng trình giữ chỗ vì bạn không phải xử lý đặc biệt các trường số khác 0 như vậy. Một ví dụ sử dụng sqlite3mô-đun của Python sẽ là,
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
Trong ví dụ trên, tất cả các giá trị trong str_value_tuplesẽ được thoát và được trích dẫn dưới dạng chuỗi khi được chuyển đến SQlite. Tuy nhiên, vì chúng tôi không kiểm tra rõ ràng kiểu thông qua TYPEOFmà chỉ có khả năng chuyển đổi sang kiểu , nên nó sẽ vẫn hoạt động như mong muốn (tức là SQLite sẽ lưu trữ dưới dạng số hoặc không thành công).