นอกเหนือจากคำตอบจาก dan04 หากคุณต้องการแทรกค่าNUMERIC
อื่นที่ไม่ใช่ศูนย์แบบสุ่มสี่สุ่มห้าที่แทนด้วย a TEXT
แต่ต้องแน่ใจว่าข้อความสามารถแปลงเป็นตัวเลขได้:
your_numeric_col NUMERIC CHECK(abs(your_numeric_col) <> 0)
กรณีการใช้งานทั่วไปอยู่ในแบบสอบถามจากโปรแกรมที่ถือว่าข้อมูลทั้งหมดเป็นข้อความ (เพื่อความสม่ำเสมอและความเรียบง่ายเนื่องจาก SQLite ทำเช่นนั้นแล้ว) สิ่งที่ดีเกี่ยวกับเรื่องนี้คืออนุญาตให้สร้างสิ่งนี้:
INSERT INTO table (..., your_numeric_column, ...) VALUES (..., some_string, ...)
ซึ่งสะดวกในกรณีที่คุณใช้ตัวยึดตำแหน่งเนื่องจากคุณไม่จำเป็นต้องจัดการฟิลด์ตัวเลขที่ไม่ใช่ศูนย์ดังกล่าวเป็นพิเศษ ตัวอย่างการใช้sqlite3
โมดูลของ Python จะเป็น
conn_or_cursor.execute(
"INSERT INTO table VALUES (" + ",".join("?" * num_values) + ")",
str_value_tuple) # no need to convert some from str to int/float
ในตัวอย่างข้างต้นค่าทั้งหมดในstr_value_tuple
จะถูก Escape และยกมาเป็นสตริงเมื่อส่งผ่านไปยัง SQlite อย่างไรก็ตามเนื่องจากเราไม่ได้ตรวจสอบประเภทอย่างชัดเจนโดยใช้TYPEOF
แต่การแปลงเป็นประเภทเท่านั้นจึงจะยังคงทำงานได้ตามต้องการ (กล่าวคือ SQLite จะจัดเก็บเป็นตัวเลขหรือล้มเหลวเป็นอย่างอื่น)