MySql查询将Select中的NULL替换为空字符串

MySql查询将Select中的NULL替换为空字符串,mysql,string,replace,null,Mysql,String,Replace,Null,如何用空字符串替换select中的空值? 输出“NULL”值看起来不太专业 这是非常不寻常的,基于我的语法,我希望它能工作。 我希望得到一个解释,为什么它没有 select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test; 原始表格的外观、所需内容以及实际打印内容的示例: original wanted what actually prints --------

如何用空字符串替换select中的空值? 输出“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,当然这并没有解决它。我还尝试交换when case的位置,但没有成功

下面给出的3种解决方案似乎都能完成这项任务

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

试试这个,这也应该去掉那些空行:

SELECT prereq FROM test WHERE prereq IS NOT NULL;
试试下面

  select if(prereq IS NULL ," ",prereq ) from test
试试看。它返回第一个非空值

SELECT COALESCE(`prereq`, ' ') FROM `test`
Coalesce将返回从左到右传递给它的第一个非null参数。如果所有arguemnt都为null,它将返回null,但我们在那里强制使用空字符串,因此不会返回null值


还请注意,标准SQL中支持该运算符。事实并非如此。因此,使用前者是一种很好的做法。此外,请记住,COALESCE支持2个以上的参数,它将对这些参数进行迭代,直到找到非空的一致性。

如果您确实必须输出每个值,包括空值:

select IFNULL(prereq,"") from test

其中一些内置功能应该可以工作:

(值,…)

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

测试值是否为空

(expr1、expr2)

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


原始表单近乎完美,您只需在CASE之后省略prereq:

我在数据库中的非必需字段中有空值(默认值为空)。它们不会导致值“null”显示在网页中。但是,当通过网页输入表单创建数据时,会将值“null”设置到位。这是由于JavaScript在通过AJAX和jQuery提交数据时接受null并将其转录为字符串“null”。确保这不是基础问题,因为简单地做以上只是对实际问题的创可贴。我还实现了上述解决方案IFNULL(…)作为双重度量。谢谢

UPDATE your_table set your_field="" where your_field is null
此查询正在选择“prereq”值,如果其中任何一个值为null,则会显示一个空字符串
因此,它显示所有值,但空值显示在空白中

我认为
(prereq为空)
应该只读取
NULL
这是过滤输出,我不认为OP在后面这是基于他的示例的我的解决方案。我真的不明白为什么空行比空值更专业。我同意应该注意IFNULL的MySQL特性。它在OP情况下有效,但在其他情况下可能不起作用。如果为null,如何省略?(不选?)我不太明白这个问题,对不起!!这将用空值替换空值,但为了解决问题,请检查我的第二个答案。请考虑添加对该代码所做的解释。代码示例可能立即有用,但从长远来看,解释更有用。如果您将IFNULL与groupBy一起使用,那么应该有一个别名:从testgroupby n中选择IFNULL(prereq,“”)作为n。
SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
UPDATE your_table set your_field="" where your_field is null
select IFNULL(`prereq`,'') as ColumnName FROM test