在 Python 3 中用其他类型替换 NULL sqlite3 数据库列值有问题吗?

Issue with replacing NULL sqlite3 database column values with other types in Python 3?

我 运行 遇到了 Python 3 中 sqlite3 模块的问题,我似乎无法弄清楚如何从数据库中替换 NULL 值其他的,主要是字符串和整数。

此命令不执行此操作,但也不会引发任何异常: UPDATE table SET animal='cat' WHERE animal=NULL AND id=32

数据库 table 列“animal”的类型为 TEXT,并在未指定其他值的情况下填充了 NULL。 “id”列是主键的,因此仅具有唯一的整数行索引。

如果定义了“动物”列,而不是 NULL,则上述命令可以完美运行。 我可以用它替换现有的字符串、整数和浮点数。

我在这里忽略了什么?

谢谢。

SQL 中的 NULL 值很特殊,要将值与它进行比较,您需要使用 ISIS NOT 运算符。所以你的查询应该是这样的:

UPDATE table
SET animal = 'cat'
WHERE animal IS NULL AND id = 32;

NULL 根据定义表示 SQL 中的“未知”,因此将列直接与 = 进行比较也会产生未知结果。