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;