这个问题在这里已经有答案了:
mysql组\u concat未提供完整数据(3个答案)
两年前关门了。
我有一个字符串,在mysql上使用串联的值,如下所示:
CONCAT("[\"",GROUP_CONCAT(DISTINCT(concat_ws("=>",val_1, val_2,val_3)) ORDER BY val_4 DESC SEPARATOR "\",\""),"\"]")
我注意到每一行的输出似乎不完整 var_dump
好像是这样的:
"["CONFECTIONERY=>BISCUITS=>CRACKERS",
"CONFECTIONERY=>BISCUITS=>COOKIES",
"ORIENTAL GROCERY=>KOREAN GROCERY=>KOREAN FOOD (DRY, PACKET)",
"BEVERAGE=>COFFEE=>PREMIX COFFEE POWDER",
"CLEANING AGENT & PEST CONTROL=>LAUNDRY=>LAUNDRY LIQUID",
"CLEANING AGENT & PEST CONTROL=>LAUNDRY=>LAUNDRY POWDER",
"BEVERAGE=>TEA=>WESTERN TEA",
"CEREAL & SPREADS=>CEREAL=>"
它缺少结束方括号和=>字符后的第三个元素。其他线路也在同一位置中断。如果我试着 json_decode
在php中,我得到null可能是因为没有很好地编码,因为最长的行(超过345个字符)被剪切。
或者可能是一个问题与字符串的长度有关?因为我注意到它们很长,而且它们与字符在同一位置中断。请参见下面mysqlworkbench上的输出截图:
我也数过了,每一行有345个字符,并且在同一点中断。这似乎不是巧合:
据我所知,我应该正确地转义这些字符。有什么建议吗?
1条答案
按热度按时间clj7thdc1#
转义或php代码没有问题,这是mysql服务器对分组机制函数的限制,例如groupconcat。
有关更多信息,请参阅手册:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len
您可以为此查询或全局更改此sys\u选项,但对数据库端如此多的数据进行分组是个坏主意。