代码之家  ›  专栏  ›  技术社区  ›  Haim Evgi

where in子句中的mysql空值

  •  10
  • Haim Evgi  · 技术社区  · 14 年前

    如何处理 无效的 mysql中的值 条款

    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 回复  |  直到 14 年前
        1
  •  8
  •   Emerion    14 年前

    根据我的理解,您希望提取每个1、2、3和空值的记录。

    我认为不可能在in运算符中设置null。它的期望值和空值很好。。不是价值。所以你必须把OR和null放在一起才能得到想要的结果。

        2
  •  7
  •   kraftan    14 年前

    MySQL Reference Manual 帮助:

    为了符合SQL标准,IN不仅在左侧的表达式为空时返回NULL,而且在列表和 .

        3
  •  5
  •   swenedo    6 年前

    有一个MySQL函数 COALESCE NULL 列表中的值,或 无效的 如果没有- 无效的

    例如,如果你 SELECT COALESCE(NULL, NULL, -1); 你会得到 -1 回来因为这是第一次- 无效的

    所以这里的诀窍是用 聚结 ,并将一个值作为最后一个参数添加到 IN 功能。

    SELECT * FROM mytable WHERE COALESCE(field,-1) IN (1,2,3,-1)
    

    只有字段是1、2或3,或者字段是

        4
  •  -1
  •   Petter Friberg Onceler    7 年前

    以下语句应该有用:

    SELECT * FROM mytable WHERE COALESCE(field,0) IN (1,2,3,0)