这两个查询的结果如何:
SELECT * FROM `workers` WHERE `name` = 'Smith`
和
SELECT * FROM `workers` WHERE NOT `name` = 'Smith`
不与整个表workers
求和?
答案 0 :(得分:7)
因为NULL
字段中的name
没有进入任何一个查询。
在SQL
使用的三元逻辑中,NULL = 'Smith'
和NOT NULL = 'Smith'
都评估为NULL
并被过滤掉。
使用NULL
- 安全比较运算符<=>
:
SELECT * FROM `workers` WHERE `name` <=> 'Smith`
和
SELECT * FROM `workers` WHERE NOT `name` <=> 'Smith`