MySql查询在Select中用空字符串替换NULL

58 mysql string null replace

如何用空字符串替换select中的NULL值?输出"NULL"值看起来不太专业.

这是非常不寻常的,根据我的语法,我希望它能够工作.希望得到解释为什么它没有.

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;
Run Code Online (Sandbox Code Playgroud)

原始表的样子,我想要的以及实际打印的示例:

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL
Run Code Online (Sandbox Code Playgroud)

你可以看到它与我想要的相反,因此我尝试将IS NULL翻转为IS NOT NULL,当然那并没有解决它,也尝试交换当案例的位置,这是行不通的.

编辑:看来下面给出的3个解决方案都可以完成任务.问候

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test
Run Code Online (Sandbox Code Playgroud)

JSc*_*Ced 104

如果你真的必须输出包括NULL值的每个值:

select IFNULL(prereq,"") from test
Run Code Online (Sandbox Code Playgroud)


Mos*_*cho 74

SELECT COALESCE(prereq, '') FROM test
Run Code Online (Sandbox Code Playgroud)

Coalesce将返回从左到右传递给它的第一个非null参数.如果所有arguemnts都为null,它将返回null,但我们在那里强制一个空字符串,因此不会返回null值.

另请注意,标准SQL支持COALESCE运算符.这不是IFNULL的情况.因此,使用前者是一个好习惯.另外,请记住,COALESCE支持2个以上的参数,它将迭代它们,直到找到非空的重合.


小智 14

试试以下;

  select if(prereq IS NULL ," ",prereq ) from test
Run Code Online (Sandbox Code Playgroud)


小智 10

其中一些内置函数应该可以工作:

合并(值,...)

返回列表中的第一个非 NULL 值,如果没有非 NULL 值,则返回 NULL。

一片空白

测试值是否为 NULL。

IFNULL (expr1,expr2)

如果 expr1 不为 NULL,则 IFNULL() 返回 expr1;否则返回 expr2。


Abd*_*IKH 6

select IFNULL(`prereq`,'') as ColumnName FROM test
Run Code Online (Sandbox Code Playgroud)

此查询正在选择“prereq”值,如果其中任何一个值为空,它会根据您的喜好显示一个空字符串 因此,它显示所有值,但空值显示为空白

  • 考虑添加对这段代码的作用的解释。代码示例可能立即有用,但从长远来看,解释更有用。 (2认同)