SQLite tem um
group_concat()
função que permite concatenar vários resultados retornados para uma coluna em um. Isso às vezes é chamado de “agregação de strings”.
Por exemplo, ao consultar um banco de dados, em vez de ter o valor de cada coluna como saída em uma nova linha, você pode usar
group_concat()
para tê-los como uma lista separada por vírgulas. Sintaxe
Você pode usar esta função de uma das seguintes maneiras:
group_concat(X)
group_concat(X,Y)
Em outras palavras, o
group_concat()
A função pode ser usada com um argumento ou dois. O segundo argumento especifica um caractere a ser usado como separador. Se você não especificar isso, uma vírgula (
,
) será usado como separador. Exemplo com um argumento
Aqui está um exemplo de chamada de
group_concat()
com um argumento. SELECT group_concat(FirstName)
FROM Employee;
Resultado:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Se eu não usei
group_concat()
para concatenar esta coluna, os resultados ficariam assim:SELECT FirstName
FROM Employee;
Resultado:
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Use um separador personalizado
Conforme mencionado, você tem a opção de especificar qual caractere usar como separador.
Aqui está um exemplo de especificação do símbolo de pipe (
|
) como separador. SELECT group_concat(FirstName, '|')
FROM Employee;
Resultado:
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
Aqui está outro que usa uma vírgula, mas também adiciona um espaço à direita da vírgula.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Resultado:
Andrew, Nancy, Jane, Margaret, Steve, Michael, Robert, Laura
Agrupar os resultados
Você pode retornar várias colunas e usar o
GROUP BY
cláusula para agrupá-los adequadamente. Aqui está um exemplo.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Resultado:
ArtistId group_concat(AlbumName)
-------- --------------------------------------------------------------------------
1 Powerslave,Somewhere in Time,Piece of Mind,Killers,No Prayer for the Dying
2 Powerage
3 All Night Wrong,The Sixteen Men of Tain
4 Big Swing Face
5 Ziltoid the Omniscient,Casualties of Cool,Epicloud
6 Singing Down the Lane
7 Long Lost Suitcase,Praise and Blame,Along Came Jones
9 No Sound Without Silence
12 Blue Night,Eternity,Scandinavia