我有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 |
+----------------+
答案 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.