MySQL CONCAT() 函数无法正常工作

4
我遇到了 CONCAT mysql 函数的问题。
Mysql 查询语句是:
SELECT CONCAT(a_firstname,' ',a_lastname) as a_employeename FROM employee.

这意味着如果任何一个字段为空,则会返回 null。
+--------------------------+
| a_firstname | a_lastname |
----------------------------
| bh          | a          |
| a           | NULL       |
+--------------------------+

结果。
+----------------+
| a_employeename |
------------------
| bh             |
| NULL           |
+----------------+
5个回答

8

MySQL将NULL视为“无数据”,因此任何与NULL组合的内容都会变成NULL。为了避免这种情况,您必须使用IFNULL(field,result)。

请参考以下查询:

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

谢谢。


使用COALESCE更好,因为它是标准的SQL查询。IFNULL不是标准的SQL查询,您在将数据移植到其他DBMS数据库时可能会遇到困难。 - Payel Senapati

6
让我们先从谦卑的态度开始学习:CONCAT是正常工作的,但你没有正确使用它。请不要那么急于得出结论。
这里的问题在于,在连接NULL值时必须使用COALESCE
SELECT CONCAT(COALESCE(a_firstname, ''),' ', COALESCE(a_lastname, ''))

这是因为任何涉及到NULL的操作(例如将NULL与字符串连接)都会导致结果为NULL。请参阅NULL值问题

1

只需使用IFNULL函数

尝试这段代码

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

0

当您使用 CONCAT 函数时,如果其中一个字段为 NULL,则结果始终为 NULL。


0
如果您想要连接 NULL 和 NOT NULL 字段,CONCAT_WS() 是最佳解决方案。 例如: CONCAT_WS(',', FIELD1,FIELD2,FIELD3) 将返回 'FIELD1Value,FIELD2Value,FIELD3Value'。 如果 FIELD2Value 为 NULL,则输出将为 'FIELD1Value,FIELD3Value'。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接