MySQL Group Concat for Strings

MySQL Group Concat for Strings

La función de grupo _concat es un grupo por función agregada que le permite concatenar los valores de columna de múltiples filas en un solo campo. Devuelve una cadena si el grupo establecido contiene un valor de columna o no nulo y devuelve un valor nulo 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 nulo si no existe ninguno.

La sintaxis general es:

Group_concat ([distinto] expr [, expr ...]
[Orden de unsigned_integer | col_name | Expr
[ASC | Descif] [, col_name ...]]
[Separador str_val])

Explicación

De la sintaxis anterior, puede ver que la función Group_concat utiliza cláusulas y restricciones mySQL para especificar las diversas opciones:

  1. DISTINTO: La cláusula distinta ayuda a eliminar los valores duplicados en el grupo establecido antes del proceso de concatenación. Considere nuestro tutorial explicando MySQL distinto para comprender cómo funciona.
  2. Ordenar por: La siguiente cláusula es el orden por parte de eso ayuda a clasificar los valores en un orden especificado. El orden puede ser ascendente o descendente. Si no se especifica ningún pedido, 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 mysql group_concat () se limita a una longitud el valor establecido en la variable Group_concat_max_len. Este valor se define en el sistema y tiene un valor predeterminado de 1024. Puede cambiar este valor a nivel mundial o configurarlo en la sesión que necesita.

Establecer [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/servidor-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 concat de tabla (valor char);

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

Insertar en valores de concat (valor) ('h'), ('e'), ('l'), ('l'), ('o');

Si realizamos una operación BASIC Group_concat en los valores de la tabla, obtendremos un resultado de cadena como se muestra a continuación:

Seleccione Group_concat (orden de valor distinto por valor ASC separador "") de concat;

El valor resultante es:

+---------------------------------------------------------------+
| Group_concat (orden de valor distinto por valor ASC Separator "") |
+---------------------------------------------------------------+
| E H L O |
+---------------------------------------------------------------+
1 fila en el set (0.01 seg)

¿Quieres otra forma de entender lo que sucedió con el resultado dado anteriormente??

Comenzamos eliminando todos los valores duplicados debido a la cláusula distinta mysql que elimina una l.

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

Helo -> Ehlo

Finalmente, realizamos el proceso de concatenación utilizando un espacio como separador para los valores establecidos, lo que resulta en la cadena e h l o desde h, e, l o.

Ejemplo de casos de uso

Tomemos una base de datos real y la usemos para ilustrar cómo podemos implementar la función Group_concat (). En este ejemplo, utilizaremos la base de datos Sakila, y específicamente, la tabla de direcciones de la base de datos 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 separar todos los distritos únicos por una tubería como se muestra en la consulta a continuación:

Seleccione Group_concat (orden distintivo de distrito por separador de distrito "|") de Sakila.límite de dirección 5;

La consulta anterior mostrará todos los distritos distintos y los ordenará en orden ascendente separado por una tubería.

NOTA: La función group_concat () es una función agregada. Por lo tanto, se requiere que especifique el orden por instrucción dentro de la función y no en la instrucción SELECT.

Conclusión

La función mysql group_concat () discutida en este tutorial es una función útil que le permite crear datos únicos, ordenados y organizados de una tabla que puede contener duplicados y datos desordenados.

Considere los documentos o nuestros otros tutoriales MySQL para aprender más.