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

时间:2012-03-05 01:47:30

标签: mysql string replace null

如何用空字符串替换select中的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,当然没有修复它,也尝试交换当案例的位置,这不起作用。< / p>

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

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

11 个答案:

答案 0 :(得分:99)

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

select IFNULL(prereq,"") from test

答案 1 :(得分:72)

SELECT COALESCE(prereq, '') FROM test

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

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

答案 2 :(得分:13)

尝试以下;

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

答案 3 :(得分:4)

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

Coalesce
Is Null
IfNull

答案 4 :(得分:3)

原始表单几乎是完美的,您只需在 CASE 之后省略 prereq

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

答案 5 :(得分:2)

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

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

答案 6 :(得分:0)

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

SELECT prereq FROM test WHERE prereq IS NOT NULL;

答案 7 :(得分:0)

select IFNULL(`prereq`,'') as ColumnName FROM test

此查询选择的是“ prereq”值,如果其中任何一个为null,则根据需要显示一个空字符串 因此,它显示所有值,但NULL值显示为空白

答案 8 :(得分:-1)

我在数据库的非必需字段中有null(默认值为NULL)。它们不会使值“ null”显示在网页中。但是,在通过网页输入表单创建数据时,将放置“ null”值。这是由于JavaScript在通过AJAX和jQuery提交数据时采用null并将其转录为字符串“ null”。确保这不是基本问题,因为简单地执行上述操作只是解决实际问题的临时措施。我还实现了上述解决方案IFNULL(...)作为双重措施。谢谢。

答案 9 :(得分:-1)

UPDATE your_table set your_field="" where your_field is null

答案 10 :(得分:-1)

我知道这是一个老问题,但是我得到了没有更改查询的最佳解决方案,并且还支持SELECT *语句

foreach ($row as &$value) {
  if($value==null){
     $value="";
  }
}