set @sql1 = ''; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(field_id = ''', field_id, ''', value, NULL)) AS `', field_id,'`' ) ) INTO @sql1 FROM content_details; SET @sql1 = CONCAT('SELECT ', @sql1, ' FROM content_details GROUP BY content_id'); select @sql1; PREPARE stmt FROM @sql1; EXECUTE stmt; DEALLOCATE PREPARE stmt;
В приведенном выше коде переменная @ sql1 хранит только некоторые ограниченные символы. Здесь я динамически соединяю строку. Я не знаю точной общей длины струны, которая будет в будущем. мой вопрос в том, как мы можем установить неограниченную длину char для переменной $ sql1. Пожалуйста посоветуй.
1 ответ
Похоже, у вас проблема с GROUP_CONCAT_MAX_LEN
. Вы можете настроить длину этой переменной во время сеанса.
Длина этой переменной по умолчанию - 1024. У вас должна быть возможность использовать:
set session group_concat_max_len = yourNewValue;
Если бы вы установили это глобально, это повлияло бы на все другие соединения, поэтому вы можете захотеть установить его только для своего сеанса.
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными.
SET @a = 'blahblah....'
).