sql >> Databasteknik >  >> RDS >> Sqlserver

SQL-fråga - Sammanfoga resultat till en sträng

Om du använder SQL Server 2005 eller senare kan du använda denna FÖR XML-SÖG &STYR knep:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

FÖR XML PATH('') sammanfogar i princip dina strängar till ett, långt XML-resultat (något som ,code1,code2,code3 etc.) och STUFF sätter ett "ingenting"-tecken vid det första tecknet, t.ex. raderar det "överflödiga" första kommatecken för att ge dig det resultat du förmodligen letar efter.

UPPDATERING: OK - jag förstår kommentarerna - om din text i databastabellen redan innehåller tecken som < , > eller & , sedan min nuvarande lösning kommer faktiskt att koda dessa till < , > och & .

Om du har problem med den XML-kodningen - ja, du måste titta på lösningen som föreslagits av @KM som också fungerar för dessa tecken. Ett ord av varning från mig:detta tillvägagångssätt är mycket mer resurs- och bearbetningsintensiva – bara så du vet.



  1. Hur hittar man n:e ranking i MySQL?

  2. Säkra dina Mongo-kluster med SSL

  3. ACOS() Funktion i Oracle

  4. Använder du LIMIT inom GROUP BY för att få N resultat per grupp?