在Mysql Perpared语句中增加set变量长度

Sat*_*abu 2 mysql prepared-statement

    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变量的无限字符长度.请指教.

Tar*_*ryn 9

听起来你有问题GROUP_CONCAT_MAX_LEN.您可以在会话期间调整此变量的长度.

此变量的默认长度为1024.您应该能够使用:

set session group_concat_max_len = yourNewValue;
Run Code Online (Sandbox Code Playgroud)

如果您要全局设置它会影响所有其他连接,这就是您可能只想为会话设置它的原因.