如何处理mysql中的 NULL 值其中 CLAUSE
我尝试
SELECT * FROM mytable WHERE field IN(1,2,3,NULL)
它不起作用
只能像:
一样SELECT * FROM mytable WHERE field IN(1,2,3) OR field IS NULL
我怎样才能在WHERE IN
中使用它?有可能吗?
答案 0 :(得分:7)
根据我的理解,你想要用1,2,3和null值来拉每条记录。
我认为不可能在IN运算符中放置null。它期望值和null很好..不是值。所以你真的必须使用null和OR来获得所需的结果。
答案 1 :(得分:6)
也许来自MySQL Reference Manual的信息有用:
为了符合SQL标准,IN不仅在左侧的表达式为NULL时返回NULL,而且如果在列表中找不到匹配项,并且列表中的一个表达式为NULL < /强>
答案 2 :(得分:2)
有一个名为COALESCE
的MySQL函数。它返回列表中的第一个非NULL
值,如果没有非NULL
值,则返回NULL
。
例如,如果您运行SELECT COALESCE(NULL, NULL, -1);
,您将得到-1
的返回值,因为它是第一个非NULL
值。
因此,这里的窍门是将表达式包装在COALESCE
中,并添加一个值,并将其作为最后一个参数添加到IN
函数中。
SELECT * FROM mytable WHERE COALESCE(field,-1) IN (1,2,3,-1)
仅当字段为1,2或3或字段为NULL
时,它才会匹配。
答案 3 :(得分:0)
以下声明应该有所帮助:
SELECT * FROM mytable WHERE COALESCE(field,0) IN (1,2,3,0)