4

我对 CONCAT mysql 函数有疑问

Mysql 查询是

SELECT CONCAT(a_firstname,' ',a_lastname) as a_employeename FROM employee.

如果任何字段为空,这将给出空值

+--------------------------+
| a_firstname | a_lastname |
----------------------------
| bh          | a          |
| a           | NULL       |
+--------------------------+

结果

+----------------+
| a_employeename |
------------------
| bh             |
| NULL           |
+----------------+
4

5 回答 5

7

MySQL 将 NULL 视为“无数据”,因此任何东西都可能与 NULL 成为 NULL。所以为了避免这种情况,你必须输入 IFNULL(field,result)。

请参阅以下查询:

SELECT CONCAT(IFNULL(a_firstname,''),' ',IFNULL(a_lastname,'')) as a_employeename FROM employee

谢谢。

于 2013-01-11T10:36:29.300 回答
6

让我们从谦逊的教训开始:CONCAT 工作正常,但没有正确使用它。请不要急于下结论。

COALESCE这里的问题是在连接NULL值时必须使用:

SELECT CONCAT(COALESCE(a_firstname, ''),' ', COALESCE(a_lastname, ''))

这是因为任何涉及的操作NULL(例如NULL与字符串连接)也会导致NULL. 查看NULL 值的问题

于 2012-05-10T10:10:30.113 回答
1

只使用IFNULL功能

试试这个代码

SELECT CONCAT(IFNULL(a_firstname,''),' ',IFNULL(a_lastname,'')) as a_employeename FROM employee.
于 2012-05-10T11:27:39.333 回答
0

当您进行 CONCAT 并且其中一个字段为 NULL 时,结果始终为 NULL。

于 2012-05-10T10:10:36.200 回答
0

如果你想连接 NULL 和 NOT NULL 字段,CONCAT_WS() 是最好的解决方案。示例:CONCAT_WS(',', FIELD1,FIELD2,FIELD3) 将返回 'FIELD1Value,FIELD2Value,FIELD3Value'。如果 FIELD2Value 为 NULL,则输出将为“FIELD1Value,FIELD3Value”。

于 2012-05-10T10:53:30.487 回答