Mysql CONCAT()无法正常工作

时间:2012-05-10 10:08:50

标签: mysql sql

我有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 个答案:

答案 0 :(得分:5)

MySQL将NULL视为“无数据”,因此任何可能是NULL的俱乐部都会变为NULL。 所以为了避免这种情况,你必须把IFNULL(字段,结果)。

请参阅以下查询:

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

感谢。

答案 1 :(得分:4)

让我们从谦虚的教训开始:CONCAT 正常工作,但没有正确使用它。请不要急切地得出结论。

此处的问题是,在连接COALESCE值时必须使用NULL

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

这是因为涉及NULL的任何操作(例如将NULL与字符串连接在一起)也会产生NULL。请参阅problems with NULL values

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

只需使用IFNULL功能

试试这段代码

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