我有以下查询。根据http://dev.mysql.com/doc/refman/5.0/en/case.html , null=null
为假,因此第一个 case 行永远不会出现。完成此任务的替代查询是什么?
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";
最佳答案
所以使用 where <condition>
case
的形式:
SELECT CASE WHEN c1 is NULL THEN CONCAT('Hi', name, ' Your value is NULL')
WHEN c1 = 'v1'
THEN CONCAT('Hello ', name, ' The value is ',
(CASE WHEN c2 = 'v11' THEN 'bla'
WHEN c2 = 'v12' THEN 'bla bla'
END), ')'
)
WHEN c1 = 'v21
THEN CONCAT('Howdy there ', name, ' Yep, the value is ',
(CASE WHEN c3 = 'v21' THEN 'beebop'
WHEN c3 = 'v22' THEN 'bopbee'
END), ')'
)
END
FROM mytable
WHERE bla = 'bla';
此外,对字符串(和日期)常量使用单引号。不要将它们用于任何其他用途,例如引用定界符。
关于mysql - 带有 NULL 的 SQL CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25096854/