sql >> Database >  >> RDS >> Sqlserver

SQL-query - resultaten samenvoegen tot één string

Als u SQL Server 2005 of hoger gebruikt, kunt u deze FOR XML PATH & STUFF gebruiken truc:

DECLARE @CodeNameString varchar(100)

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

De FOR XML PATH('') voegt in feite uw strings samen tot één lang XML-resultaat (zoiets als ,code1,code2,code3 enz.) en de STUFF plaatst een "niets" teken bij het eerste teken, b.v. wist de "overbodige" eerste komma, om u het resultaat te geven waarnaar u waarschijnlijk op zoek bent.

UPDATE: OK - ik begrijp de opmerkingen - als uw tekst in de databasetabel al tekens bevat zoals < , > of & , dan mijn huidige oplossing zal deze in feite coderen in < , > , en & .

Als je een probleem hebt met die XML-codering - ja, dan moet je kijken naar de door @KM voorgestelde oplossing die ook voor die tekens werkt. Eén woord van waarschuwing van mij:deze aanpak is veel meer resource- en verwerkingsintensief - zodat u het weet.



  1. MariaDB FLOOR() versus TRUNCATE()

  2. COS() Voorbeelden in SQL Server

  3. Wat is de beste werkwijze voor het invoegen van een record als deze nog niet bestaat?

  4. SQL-insert genereren in voor Oracle