项目场景:
需要拼接数据用逗号隔开,但是有些数据多了一个逗号
问题描述
GROUP_CONCAT(DISTINCT t1.phone SEPARATOR ‘,’) AS phone,
在mysql语句中使用拼接函数拼接字符串
理性结果:152155656,135663234,189323236
实际结果:,152155656,135663234,189323236
实际拼接字符串前面多了一个逗号
原因分析:
经过排查发现造成问题原因是因为:需要拼接的部分字段数据值是""
是空字符,所以函数 GROUP_CONCAT会把结果是空字符串的数据作为一个值,于是就用逗号连接一个空字符串值,最后发现我们需要把空字符串转化为一个null,这样就不会被当做一个空值,而是一个null,就不会被拼接上了
解决方案:
把""空字符串转化为null
方法:
CASE phone
WHEN "" THEN NULL
ELSE phone
END
扩展:mysql中null和空字符串的区别与问题!
判断NULL用is null 或者 is not null。 sql语句里可以用ifnull函数来处理
判断空字符串‘’,要用 =‘’ 或者 <>‘’。sql语句里可以用if(col,col,0)处理,即:当col为true时(非null,及非’')显示,否则打印0