这篇文章的标题是“CONCAT 和 Longtext 的问题”,这具有误导性,因为提出问题的人真的想了解 GROUP_CONCAT。我在 Google 中找到了这篇文章,因为我正在处理 MySQL 中 CONCAT 的限制。对于那些找到这篇文章并正在寻找如何增加 CONCAT 允许的最大长度的人来说,这里是如何做到的:
问题是调整 group_concat_max_len 不适用于 CONCAT,它仅适用于 GROUP_CONCAT,这意味着如果您遇到 CONCAT 的限制,您将不得不重新编写查询以使用 GROUP_CONCAT。
因此,假设您通过以下方式使用 CONCAT:
UPDATE some_table
SET some_field=CONCAT(some_field,'super long string to append to the end of the data in some_field')
WHERE some_criteria_field = 'match on this string';
但是您尝试在 some_field 内容末尾连接的数据被截断,或者只是将字段 some_field 设置为空/空。因此,为了减轻 CONCAT 的明显限制,查询必须采用以下方式:
SET @@session.group_concat_max_len = @@global.max_allowed_packet;
UPDATE some_table SET some_table.some_field=(
SELECT GROUP_CONCAT( queue.append_to_end SEPARATOR '') as new_some_field
FROM
(
SELECT append_to_end FROM some_table WHERE some_criteria_field = 'match on this string'
UNION
SELECT 'super long string to append to the end of the data in some_field' as append_to_end
) as queue
) WHERE some_criteria_field = 'match on this string'
有关更深入的信息,请查看我在下面的链接中找到此答案的文章。资料来源:http ://boulderapps.co/mysql-concat-limitation