Concatenação no SQL [RESOLVIDO]

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!

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!

jogue seu resultset num list e chame toString

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

1 curtida

[quote=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!
[/quote]

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ó

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

[quote=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[/quote]

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)

Coloque o ‘separator’ na consulta.

1 curtida

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

DEU CERTO _

obrigado a todos!

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