我在下面有一个MySQL表
CREATE TABLE Test(Name VARCHAR(30));
INSERT INTO Test VALUES ('Name1'),
('Name2'),
(null),
('Name3'),
(null),
('Name4');
Run Code Online (Sandbox Code Playgroud)
现在当行为空时,我希望它在前端显示为空,否则包含在行中的值
我尝试了以下查询,但它没有工作
SELECT CASE Name
WHEN NULL
THEN '' ELSE Name
END AS Names
FROM Test
Run Code Online (Sandbox Code Playgroud)
产量
Name1
Name2
Name3
Name4
Run Code Online (Sandbox Code Playgroud)
SQLFiddle的链接
谢谢你的答复
空值在SQL中是特殊的,您不能将它们视为普通表达式.虽然您可以指定NULL一个列,但您无法将其与它进行比较,就像它是正常值一样; NULL如果其中一个参数是NULL,则返回所有比较函数,并将其视为false(因此NULL = NULL并且1 <> NULL都为false).您需要使用特殊表达式进行比较NULL.最基本的形式是<expression> IS NULL(或<expression> IS NOT NULL),但也有便利功能IFNULL()和COALESCE().
SELECT IFNULL(Name, '') AS Names
FROM Test
Run Code Online (Sandbox Code Playgroud)
要么
SELECT CASE WHEN Name IS NULL
THEN ''
ELSE Name
END AS Names
FROM Test
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅3.3.4.6.在MySQL文档中使用NULL值.