2013-06-04 4 views
2
 
    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 переменная, хранящая только некоторые ограниченные символы. Здесь я динамически строю строку. Я не знаю точной общей длины строки, что будет на будущее. мой вопрос в том, как мы можем установить неограниченную длину символа переменной $ sql1. Пожалуйста посоветуй.В Mysql Подготовленный оператор увеличивает заданную переменную длину

+0

Что вы хотите сказать? – RandomSeed

+0

Для этого мне нужна переменная $ sql1 с неограниченной длиной символа. –

+0

Пожалуйста, добавьте это в тело вашего вопроса, чтобы нам не нужно было просматривать комментарии, чтобы узнать, каков фактический вопрос. Вы столкнулись с какой-либо проблемой до сих пор? Максимальный размер переменной настолько велика, что я даже не стал бы думать об этом. – RandomSeed

ответ

7

Похоже, что у вас проблема с GROUP_CONCAT_MAX_LEN. Вы можете отрегулировать длину этой переменной во время сеанса.

По умолчанию длина этой переменной 1024. Вы должны быть в состоянии использовать:

set session group_concat_max_len = yourNewValue; 

Если вы должны были установить это в глобальном масштабе было бы воздействовать на все другие соединения, поэтому вы можете установить только это для вашей сессии.

+0

Спасибо. Его работа потрясающая .. –