MySql查询在select中用空stringreplaceNULL

你如何用空stringreplaceselect中的NULL值? 输出“NULL”值看起来不太专业。

这是非常不寻常的,基于我的语法,我期望它的工作。 希望解释为什么它没有。

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test; 

什么样的原始表看起来像什么,我想要什么,以及什么样的实际打印:

 original wanted what actually prints -------- ------ --------------------- value1 value1 NULL NULL value2 value2 NULL NULL 

正如你所看到的,它与我想要的是相反的,因此我尝试翻转IS NULL到IS NOT NULL,当然那没有修复它,也尝试交换case,哪个没有工作的位置。

编辑:看来下面给出的三个解决scheme都做这个任务。 问候

 select if(prereq IS NULL ," ",prereq ) from test select IFNULL(prereq,"") from test select coalesce(prereq, '') from test 

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

 select IFNULL(prereq,"") from test 
 SELECT COALESCE(prereq, '') FROM test 

合并将从左向右返回传递给它的第一个非空参数。 如果所有的参数都是null,它将返回null,但是我们在那里强制一个空string,所以不会返回空值。

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

尝试下面;

  select if(prereq IS NULL ," ",prereq ) from test 

原来的forms几乎是完美的,你只需要在CASE之后省略prereq

 SELECT CASE WHEN prereq IS NULL THEN ' ' ELSE prereq END AS prereq FROM test; 

其中一些build立在function应该工作:

 Coalesce Is Null IfNull 

试试COALESCE 。 它返回第一个非NULL值。

 SELECT COALESCE(`prereq`, ' ') FROM `test` 

试试这个,这个也应该摆脱那些空行:

 SELECT prereq FROM test WHERE prereq IS NOT NULL;