【已解决】处理MySQL使用concat()函数时遇到null值的问题

  • Post author:
  • Post category:mysql




问题描述

使用

CONCAT()

拼接结果是,当

CONCAT()

函数中的一个参数为

null

,那么不管其他字符串是否有值,最后返回的拼接结果总是

null

,如下所示:

SELECT
	name,
	address,
	nationality,
	CONCAT('my name is ', name, ', to live in ', address, ', and i am from ', nationality) as str
FROM `user2`

在这里插入图片描述

MySQL 官方文档有句话

*CONCAT() returns NULL if any argument is NULL.*



解决办法

  1. 使用

    COALESCE()

    函数转换null值
SELECT
	name,
	address,
	nationality,
	CONCAT('my name is ', COALESCE(name, ''), ', to live in ', COALESCE(address, ''), ', and i am from ', COALESCE(nationality, '')) as str
FROM `user2`

在这里插入图片描述

  1. 使用

    IFNULL()

    函数转换null值
SELECT
	name,
	address,
	nationality,
	CONCAT('my name is ', ifnull(name, ''), ', to live in ', ifnull(address, ''), ', and i am from ', ifnull(nationality, '')) as str
FROM `user2`

在这里插入图片描述

  1. 尝试使用

    CONCAT_WS()

    函数拼接字符串
SELECT
	name,
	address,
	nationality,
	CONCAT_WS(',',name,address,nationality) as str
FROM `user2`

在这里插入图片描述

参考资料:


  1. https://stackoverflow.com/questions/15741314/mysql-concat-returns-null-if-any-field-contain-null

  2. 12.8 String Functions and Operators

  3. 12.5 Flow Control Functions



版权声明:本文为bronzehammer原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。