当我不想匹配具有某些特定字符串值或为null的列时,我认为我可以做这样的事情:
SELECT * FROM table_name WHERE column_name IN (NULL, 'someTest', 'someOtherTest');
但它不会返回column_name
设置为NULL的列。这有记录吗?为什么它不起作用?
不能使用=
比较NULL值(IN
就是这样做的(。
手动报价
当任何一个输入为null时,普通的比较运算符都会产生null(表示"未知"(,而不是true或false。例如,7=NULL产生NULL,7<gt;空
您需要显式添加对NULL的检查:
SELECT *
FROM table_name
WHERE (column_name IN ('someTest', 'someOtherTest') OR column_name IS NULL);
NULL和空字符串(即''(在Postgres中被认为是不同的,与Oracle不同。
查询可以修改为:
SELECT *
FROM table_name
WHERE (column_name IN ('someTest', 'someOtherTest', '', ' ') OR
column_name IS NULL);