串联和转义字符后输出不完整

6tdlim6h  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(311)

这个问题在这里已经有答案了

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个字符,并且在同一点中断。这似乎不是巧合:

据我所知,我应该正确地转义这些字符。有什么建议吗?

clj7thdc

clj7thdc1#

转义或php代码没有问题,这是mysql服务器对分组机制函数的限制,例如groupconcat。
有关更多信息,请参阅手册:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_group_concat_max_len
您可以为此查询或全局更改此sys\u选项,但对数据库端如此多的数据进行分组是个坏主意。

相关问题