MySQL Group Concat para cadenas

Mysql Group Concat Strings



La función GROUP _CONCAT es una función agregada GROUP BY que le permite concatenar valores de columna de varias filas en un solo campo. Devuelve una cadena si el grupo establecido contiene un valor de columna o no nulo y devuelve un valor NULL si no se puede encontrar ninguno.

Este tutorial le enseñará cómo usar la función MySQL GROUP_CONCAT () para combinar cadenas de un grupo con varias opciones.







Uso básico

Como hemos mencionado, esta función devuelve un resultado de cadena con los valores de los valores no nulos concatenados o un NULL si no existe ninguno.



La sintaxis general es:



GROUP_CONCAT ([ DISTINTO ]expr[,expr ...]
[ ORDENAR POR expr
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Explicación

En la sintaxis anterior, puede ver que la función GROUP_CONCAT usa cláusulas y restricciones de MySQL para especificar las diversas opciones:





  1. DISTINTO: La cláusula DISTINCT ayuda a eliminar los valores duplicados en el grupo de conjuntos antes del proceso de concatenación. Considere nuestro tutorial que explica MySQL DISTINCT para comprender cómo funciona.
  2. ORDENAR POR: La siguiente cláusula es ORDER BY que ayuda a ordenar los valores en un orden específico. El orden puede ser ascendente o descendente. Si no se especifica ningún orden, MySQL formatea los valores en orden ascendente.
  3. SEPARADOR : Esta cláusula establece la cadena literal insertada entre los valores del grupo en el proceso de concatenación. Por defecto, MySQL usa una coma (,) para separar los valores.

NOTA: El resultado de la cadena generado por la función GROUP_CONCAT () de MySQL está limitado a una longitud del valor establecido en la variable group_concat_max_len. Este valor está definido en el sistema y tiene un valor predeterminado de 1024. Puede cambiar este valor globalmente o configurarlo en la sesión que necesite.

COLOCAR [ GLOBAL | SESIÓN ]group_concat_max_len= valor ;

Considere la referencia a continuación para obtener más información:



https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len

Cómo funciona: ejemplo

Permítame usar un ejemplo simple para explicar cómo funciona la función GROUP_CONCAT (). Considere la tabla con un campo para CHAR como:

CREAR MESA concat ( valor CARBONIZARSE );

Insertemos valores en la tabla como se muestra en la consulta a continuación:

INSERTAR DENTRO concat ( valor ) VALORES ('H'),('Y'),('LOS'),('LOS'),('O');

Si realizamos una operación GROUP_CONCAT básica en los valores de la tabla, obtendremos un resultado de cadena como se muestra a continuación:

SELECCIONE GROUP_CONCAT ( DISTINTO valor ORDENAR POR valor ASC SEPARADOR' ') DE concat ;

El valor resultante es:

+---------------------------------------------------------------+
| GROUP_CONCAT ( DISTINTO valor ORDENAR POR valor ASC SEPARADOR' ') |
+---------------------------------------------------------------+
|E H L O|
+---------------------------------------------------------------+
1hilera en colocar (0.01segundo)

¿Quiere otra forma de entender lo que sucedió con el resultado dado arriba?

Comenzamos eliminando todos los valores duplicados debido a la cláusula MySQL DISTINCT que elimina una L.

A continuación, procedemos a ORDER BY orden ascendente como se define en (ASC), que altera la cadena en forma de

HELO->EHLO

Finalmente, realizamos el proceso de concatenación usando un espacio como separador de los valores establecidos, resultando en la cadena E H L O de {H, E, L, L O}.

Casos de uso de ejemplo

Tomemos una base de datos real y usémosla para ilustrar cómo podemos implementar la función GROUP_CONCAT (). En este ejemplo, usaremos la base de datos de Sakila, y específicamente, la tabla de direcciones de la base de datos de Sakila.

Considere el recurso a continuación para descargar la base de datos para sus ejemplos:

https://dev.mysql.com/doc/index-other.html

En la tabla de direcciones de la base de datos de Sakila, obtendrá la columna del distrito. Podemos obtener todos los distritos únicos separados por una tubería como se muestra en la consulta a continuación:

SELECCIONE GROUP_CONCAT ( DISTINTO distrito ORDENAR POR SEPARADOR de distrito'|') DE dirección de sakila LÍMITE 5;

La consulta anterior mostrará todos los distritos DISTINCT y los ordenará en orden ascendente separados por una barra.

NOTA: La función GROUP_CONCAT () es una función agregada. Por lo tanto, es necesario que especifique la instrucción ORDER BY dentro de la función y no en la instrucción SELECT.

Conclusión

La función GROUP_CONCAT () de MySQL descrita en este tutorial es una función útil que le permite crear datos únicos, ordenados y organizados a partir de una tabla que puede contener datos duplicados y desordenados.

Considere los documentos o nuestros otros tutoriales de MySQL para obtener más información.