Concatenação no SQL [RESOLVIDO]

9 respostas
W

Bom dia a todos,

Alguém sabe me dizer como faço pra concatenar no sql todos os resultados de um select em uma única string? tipo assim:

se “SELECT INFO…” me retorna
INFO
______|
info1
info 2
info 3

preciso fazer alguma coisa pra que fique tudo numa string só
INFO
_______________|
info1, info2, info3

sei que tem uma função CONCAT(), mas não sei usar ela pra esse caso!

9 Respostas

leoramos

Wellington, você quer fazer isso DIRETO no SQL? Se for, eu não vejo como. Não que não existe, eu só não vejo como… a não ser usando cursores, mas aí não te vale o custo de manutenção desse negócio, creio eu. Digo isso porquê tu estás transformando coluna em linha, ou seja, transpondo teu resultSet, e esse resultado que queres é o que conseguirias fazendo uma união desses resultados.
Podes contextualizar tua necessidade?
Abraço!

balrog

jogue seu resultset num list e chame toString

Fabiano_Abreu

Olá wellingtonfoz,

Você deverá utilizar o group_concat, veja esta matéria: http://paposql.blogspot.com.br/2011/11/concatenando-campos-no-mysql.html

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

W

leoramos:
Wellington, você quer fazer isso DIRETO no SQL? Se for, eu não vejo como. Não que não existe, eu só não vejo como… a não ser usando cursores, mas aí não te vale o custo de manutenção desse negócio, creio eu. Digo isso porquê tu estás transformando coluna em linha, ou seja, transpondo teu resultSet, e esse resultado que queres é o que conseguirias fazendo uma união desses resultados.
Podes contextualizar tua necessidade?
Abraço!

supondo que eu tenha:

TABELAX
COLUNA1 | COLUNA2 | COLUNA3


dado1 | 1 | a
dado2 | 2 | b
dado3 | 3 | c
dado4 | 4 | d

esse select: “SELECT coluna1 FROM tabelaX where coluna2 < 4” me retornará 3 rows:
dado1
dado2
dado3

mas eu preciso que isso fique em uma string só para que eu possa fazer a seguinte concatenação:
SELECT CONCAT(algo,’ - ',(SELECT coluna1 FROM tabelaX where coluna2 < 4)) FROM tabelaZ;

só que essa concatenção não é possível enquanto essa subquery me retornar mais de uma linha… por isso preciso que retorne uma linha só

W

Preciso fazer isso direto no SQL e não no Java.

W

Fabiano Abreu:
Olá wellingtonfoz,

Você deverá utilizar o group_concat, veja esta matéria: http://paposql.blogspot.com.br/2011/11/concatenando-campos-no-mysql.html

Abraços.

_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL

Opa… group_concat DEU CERTO… =D
sabe me dizer se é possível e como substituir a vírgula (que separa) por outro caracter?
(Ps.: Não consigo abrir o link na rede em que estou)

L

Coloque o ‘separator’ na consulta.

W

[quote=lsjunior]Coloque o ‘separator’ na consulta.

DEU CERTO _

obrigado a todos!

leoramos

Vivendo e aprendendo! Muito massa a solução, nunca tinha visto. Legal! :smiley:

Criado 16 de abril de 2012
Ultima resposta 16 de abr. de 2012
Respostas 9
Participantes 5