Заголовок этого поста — «Проблемы с CONCAT и длинным текстом», что вводит в заблуждение, поскольку тот, кто задал вопрос, действительно хотел узнать о GROUP_CONCAT. Я нашел этот пост в Google, потому что имел дело с ограничением CONCAT в MySQL. Для тех из вас, кто нашел этот пост и ищет, как увеличить максимальную длину, разрешенную для 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 значение null/пусто. Итак, вот как должен выглядеть запрос, чтобы смягчить явные ограничения 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
person
N D
schedule
12.04.2014