在CLAUSE中的mysql NULL值

时间:2010-10-12 09:49:59

标签: mysql null where-clause

如何处理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中使用它?有可能吗?

4 个答案:

答案 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)