带有NULL的SQL CASE语句

时间:2014-08-02 15:57:00

标签: mysql sql null

我有以下查询。根据{{​​3}},null=null为false,因此第一个案例行将永远不会发生。什么是替代查询来实现这一目标?

SELECT CASE c1
    WHEN NULL THEN CONCAT("Hi",name," Your value is NULL")
    WHEN "v1" THEN CONCAT("Hello ",name," The value is ",
    CASE c2
        WHEN "v11" THEN "bla"
        WHEN "v12" THEN "bla bla"
        END 
    ,")")
    WHEN "v2" THEN CONCAT("Howdy there ",name," Yep, the value is ",
    CASE c3
        WHEN "v21" THEN "beebop"
        WHEN "v22" THEN "bopbee"
        END 
    ,")")
    END
AS myLabel
FROM mytable
WHERE bla="bla";

2 个答案:

答案 0 :(得分:2)

因此请使用where <condition>的{​​{1}}形式:

case

此外,对字符串(和日期)常量使用单引号。不要将它们用于其他任何事情,例如引用分隔符。

答案 1 :(得分:1)

另一种方法是使用COALESCE来获取默认值,以防该字段为NULL,然后使用该默认值进行比较,您将在目前的查询中与NULL进行比较,如下所示:

SELECT CASE COALESCE(c1,'')
WHEN '' THEN CONCAT("Hi",name," Your value is NULL")

当然,&#39;&#39;可能是它自己的合法值,在这种情况下,您需要使用另一个值作为默认值。由于这个原因,我个人会推荐戈登的解决方案。

相关问题