我已经堆满了这个:
我正在尝试执行此查询:
SELECT * FROM my_table WHERE some_column IN(2, 3, 5, null)
OR
SELECT * FROM my_table WHERE some_column IN('wert','qw3e','dfg',null)
但是IN没有考虑NULL值,那么我尝试了这个:
SELECT * FROM my_table WHERE IF (4 is null, some_column is null, some_column IN (4))
此查询适用于ONE值,但正如您在第一个查询中所看到的,我需要考虑多个值,如何?
认为我需要创建一个接收参数的函数来查找:
function (param)
SELECT * FROM my_table WHERE IF (param is null, some_column is null, some_column IN (param))
由于
答案 0 :(得分:3)
为什么不尝试以下方法
SELECT * FROM my_table WHERE some_column IN('wert','qw3e','dfg') OR some_column IS NULL
答案 1 :(得分:3)
SELECT * FROM my_table WHERE some_column IS NULL OR some_column IN('wert','qw3e','dfg')
答案 2 :(得分:2)
其他两个人已经回答了,但没有解释为什么IN(2, 3, 5, null)
不返回有NULL的行。那是因为NULL是一个特殊值,它不等于任何东西。 NULL = NULL实际上计算结果为False。
SELECT * FROM mytable WHERE NULL=NULL;
会返回一个空结果但是
SELECT * FROM mytable WHERE NULL IS NULL;
wouuld返回表格中的所有行。因此,在IN数组中使用NULL对行中的空值进行比较会失败。所以你需要
SELECT * FROM my_table WHERE some_column
IN('wert','qw3e','dfg') OR some_column IS NULL