我正在尝试运行一个相当简单的查询,大致如下:
SELECT * FROM TABLE WHERE NOT COLUMN1 IN ('A','B')我希望这会返回COLUMN1为NULL的行,但是,除了去掉A和B之外,它还删除了COLUMN1中的所有NULL值,我不明白其中的逻辑。非常新,所以如果有任何帮助,将不胜感激。
谢谢
发布于 2021-09-13 19:38:23
NULL有一些意外的行为。可能最令人困惑的是,当它用作条件时,它的行为类似于FALSE,而当它用作条件的子表达式时,它的行为并不像它那样。包含NULL的大多数表达式的值都是NULL (最明显的例外是NULL IS NULL和NULL IS NOT NULL是TRUE和FALSE)。
因此,NULL IN ('A', 'B')的值是NULL,而不是FALSE。
NOT NULL的值是NULL,而不是TRUE。
因此,当COLUMN1为NULL时,NOT COLUMN1 IN ('A', 'B')的值为NULL,而不是TRUE或FALSE。
您必须显式地测试NULL。
WHERE column1 IS NULL OR column1 NOT IN ('A', 'B')https://stackoverflow.com/questions/69168109
复制相似问题