Saltar al contenido

MySQL trunca el resultado concatenado de una función GROUP_CONCAT

Hola usuario de nuestra página, hallamos la respuesta a tu búsqueda, deslízate y la hallarás más abajo.

Solución:

Como ya escribí en un comentario anterior, el manual de MySQL dice:

Los valores en las columnas VARCHAR son cadenas de longitud variable. La longitud se puede especificar como un valor de 0 a 65.535.

Entonces, el problema no está en el tipo de datos del campo.

El manual de MySQL también dice:

El resultado se trunca a la longitud máxima proporcionada por la variable de sistema group_concat_max_len, que tiene un valor predeterminado de 1024. El valor se puede establecer más alto, aunque la longitud máxima efectiva del valor devuelto está restringida por el valor de max_allowed_packet. La sintaxis para cambiar el valor de group_concat_max_len en tiempo de ejecución es la siguiente, donde val es un entero sin signo: SET [GLOBAL | SESSION] group_concat_max_len = valor;

Sus opciones para cambiar el valor de group_concat_max_len son:

  1. cambiando el valor al inicio de MySQL agregando esto al comando:
    --group_concat_max_len=your_value_here
  2. agregando esta línea en su archivo de configuración de MySQL (mysql.ini): group_concat_max_len=your_value_here
  3. ejecutando este comando después del inicio de MySQL:
    SET GLOBAL group_concat_max_len=your_value_here;
  4. ejecutando este comando después de abrir una conexión MySQL:
    SET SESSION group_concat_max_len=your_value_here;

Documentación: SET, Variables del sistema del servidor: group_concat_max_len

Como mencionó Jocelyn, el tamaño de un GROUP_CONCAT() el resultado está limitado por group_concat_max_lensin embargo, hay una interacción adicional con ORDER BY que da como resultado un truncamiento adicional a 1/3 de group_concat_max_len. Para ver un ejemplo, vea esta respuesta relacionada.

El valor predeterminado para group_concat_max_len es 1024, y 1024 / 3 = 341 probablemente explica por qué el tipo de concat_products aparece como varchar(341) en el ejemplo original. Si fueras a quitar el GROUP BY productId cláusula, concat_products debería aparecer como varchar(1024).

No he encontrado esta interacción entre GROUP_CONCAT() y ORDER BY mencionado en el Manual de MySQL, pero afecta al menos a MySQL Server 5.1.

Calificaciones y reseñas

Nos encantaría que puedieras recomendar este artículo si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *