GROUP_CONCAT拼接数据中null或者““的区别

项目场景:

需要拼接数据用逗号隔开,但是有些数据多了一个逗号

问题描述

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值