我想找到满足某些条件的行及其值。值以及用于过滤的参数可以是实数或NULL
。
作为示例,请考虑以下数据库:
import sqlite3
conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.executescript("CREATE TABLE tab (value INTEGER); INSERT INTO tab VALUES (NULL), (42);")
现在,我正在寻找一个参数替换变量,该变量能够处理NULL
和非NULL
值。
print(c.execute("SELECT * FROM tab WHERE value=?", (42,)).fetchall())
--> [(42,)]
print(c.execute("SELECT * FROM tab WHERE value=?", (None,)).fetchall())
--> []
可以看出,后一种无效。为了使用None
语法,是否需要检查所有用于过滤的参数的IS NULL
的值?
print(c.execute("SELECT * FROM tab WHERE value IS NULL").fetchall())
--> [(None,)]
答案 0 :(得分:1)
在SQLite中,IS运算符还处理非NULL值:
c.execute("SELECT * FROM tab WHERE value IS ?", (anything,))