MySQL Group concat para strings

MySQL Group concat para strings

Grupo _CONCAT A função é um grupo por função agregada que permite concatenar valores de coluna de várias linhas em um único campo. Ele retorna uma string se o grupo de conjuntos contiver um ou valor de coluna sem nulo e retorna um valor nulo se não puder ser encontrado.

Este tutorial ensinará como usar o MySQL group_concat () função para combinar strings de um grupo com várias opções.

Uso básico

Como mencionamos, essa função retorna um resultado de string com os valores dos valores não nulos concatenados ou nulos se não existir.

A sintaxe geral é:

Group_concat ([distinto] expr [, expr…]
[Ordem por unsigned_integer | col_name | expr
[ASC | Desc] [, col_name…]]
[Separador str_val])

Explicação

Pela sintaxe acima, você pode ver que a função Group_Concat usa cláusulas e restrições MySQL para especificar as várias opções:

  1. Distinto: A cláusula distinta ajuda a remover os valores duplicados no grupo de conjuntos para o processo de concatenação. Considere nosso tutorial explicando o mysql distinto para entender como funciona.
  2. ORDENAR POR: A próxima cláusula é a ordem que ajuda a classificar os valores em uma ordem especificada. A ordem pode estar ascendente ou descendente. Se nenhum pedido for especificado, o MySQL formata os valores em ordem crescente.
  3. SEPARADOR: Esta cláusula define a string literal inserida entre os valores do grupo no processo de concatenação. Por padrão, MySQL usa uma vírgula (,) para separar os valores.

OBSERVAÇÃO: O resultado da string gerado pela função mysql group_concat () é limitado a um comprimento que o valor definido na variável group_concat_max_len. Este valor é definido no sistema e possui um valor padrão de 1024. Você pode alterar esse valor globalmente ou defini -lo na sessão que você precisa.

Conjunto [Global | Sessão] group_concat_max_len = value;

Considere a referência abaixo para saber mais:

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

Como funciona: exemplo

Permita -me usar um exemplo simples para explicar como funciona a função group_concat (). Considere a tabela com um campo para char como:

Crie a tabela Concat (Char Value);

Vamos inserir valores na tabela, como mostrado na consulta abaixo:

Inserir em valores concat (value) ('h'), ('e'), ('l'), ('l'), ('o');

Se executarmos uma operação BASIC GROUP_CONCAT nos valores da tabela, obteremos um resultado de string como mostrado abaixo:

Selecione Group_Concat (Ordem de Valor Distinto por Valor ASC separador "") de Concat;

O valor resultante é:

+---------------------------------------------------------------+
| Group_concat (Ordem de valor distinto por valor separador ASC "") |
+---------------------------------------------------------------+
| E h l o |
+---------------------------------------------------------------+
1 linha no conjunto (0.01 seg)

Você quer outra maneira de entender o que aconteceu com o resultado dado acima?

Começamos removendo todos os valores duplicados devido à cláusula distinta do MySQL que remove um l.

Em seguida, procedemos a ordem por ordem ascendente, conforme definido em (ASC), que altera a corda na forma de

Helo -> ehlo

Finalmente, realizamos o processo de concatenação usando um espaço como separador para os valores definidos, resultando na string e h l o de h, e, l, l o.

Exemplo de uso de casos

Vamos pegar um banco de dados real e usá -lo para ilustrar como podemos implementar a função group_concat (). Neste exemplo, usaremos o banco de dados Sakila e, especificamente, a tabela de endereços do banco de dados Sakila.

Considere o recurso abaixo para baixar o banco de dados para seus exemplos:

https: // dev.mysql.com/doc/índice-outro.html

Na tabela de endereços do banco de dados Sakila, você receberá a coluna do distrito. Podemos obter todos os distritos únicos separados por um cano, como mostrado na consulta abaixo:

Selecione Group_Concat (Ordem distinta do distrito por separador de distrito "|") de Sakila.Limite de endereço 5;

A consulta acima exibirá todos os distritos distintos e os ordenará em ordem ascendente separados por um tubo.

OBSERVAÇÃO: A função group_concat () é uma função agregada. Portanto, é necessário que você especifique a ordem por instrução dentro da função e não na instrução SELECT.

Conclusão

A função mysql group_concat () discutida neste tutorial é uma função útil que permite criar dados exclusivos, classificados e organizados de uma tabela que possa conter duplicatas e dados não ordenados.

Considere os documentos ou nossos outros tutoriais do MySQL para saber mais.