为什么这个查询输出用户:
SELECT * FROM `mytable` WHERE NOT 23 IN (1, 2, 4, 43);
但这不是:
SELECT * FROM `mytable` WHERE NOT 23 IN (1, 2, 4, 43, NULL);
以及如何使其输出?
为什么这个查询输出用户:
SELECT * FROM `mytable` WHERE NOT 23 IN (1, 2, 4, 43);
但这不是:
SELECT * FROM `mytable` WHERE NOT 23 IN (1, 2, 4, 43, NULL);
以及如何使其输出?
这是 SQL 标准的要求。我无法给出明确的简短引用,但标准指的是
IN,equality operations与其他比较运算符类似,因此IN一般三元逻辑也适用于 . 表达相当于
foo这将适用于任何人NULL。反过来,NULL在表达式中的where意思是“不匹配”你可以用这唯一的一件事做一些合理的事情——在应用程序端检查替换到条件中的数据,不要替换
NULL。