GROUP_CONCAT多列无逗号分隔:新旧服务器输出差异,求解决方案
解决GROUP_CONCAT拼接列时缺失逗号的问题
嗨,这个问题其实很好解决——你现在的写法是直接把三个字段丢进GROUP_CONCAT里,MySQL会直接把它们的值连在一起,不会自动加逗号。旧服务器的输出之所以有逗号,肯定是当时的写法里明确加了分隔符,只是你没注意到而已。
直接修改你的SQL语句,在每个字段之间手动加上逗号就行:
SELECT GROUP_CONCAT(start, ',', end, ',', flag SEPARATOR ';') FROM time;
为啥原来的写法不行?
当你写GROUP_CONCAT(start, end, flag SEPARATOR ';')时,SEPARATOR ';'只是用来分隔不同行的拼接结果,而同一行里的三个字段是直接拼接的,没有任何分隔符。这就是你现在看到列之间连在一起的原因。
更清晰的写法(可选)
如果字段比较多,怕写乱,也可以先用CONCAT把单条记录的三个字段先拼成带逗号的字符串,再用GROUP_CONCAT汇总:
SELECT GROUP_CONCAT(CONCAT(start, ',', end, ',', flag) SEPARATOR ';') FROM time;
这两种写法都能完美还原你需要的旧格式:1553169646,1553177094,End Time;1553177948,1553177962,End Time;1553177956,1553177960,End Lunch
至于配置差异的可能性其实很低,毕竟MySQL默认不会给多字段拼接自动加逗号,最直接有效的办法就是手动显式添加分隔符。
内容的提问来源于stack exchange,提问作者fallco shkoder
相关产品推荐
相关产品推荐

