我有以下查询。根据{{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";
答案 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;可能是它自己的合法值,在这种情况下,您需要使用另一个值作为默认值。由于这个原因,我个人会推荐戈登的解决方案。