sql >> Databáze >  >> RDS >> Sqlserver

SQL Query - zřetězení výsledků do jednoho řetězce

Pokud používáte SQL Server 2005 nebo vyšší, můžete použít tento FOR XML PATH & STUFF trik:

DECLARE @CodeNameString varchar(100)

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

FOR XML PATH('') v podstatě zřetězí vaše řetězce do jednoho dlouhého výsledku XML (něco jako ,code1,code2,code3 atd.) a STUFF umístí na první znak znak "nic", např. vymaže "zbytečnou" první čárku, aby vám poskytl výsledek, který pravděpodobně hledáte.

AKTUALIZACE: OK – rozumím komentářům – pokud váš text v tabulce databáze již obsahuje znaky jako < , > nebo & a poté moje aktuální řešení ve skutečnosti je zakóduje do < , > a & .

Pokud máte problém s tímto kódováním XML - pak ano, musíte se podívat na řešení navržené @KM, které funguje i pro tyto znaky. Jedno slovo varování ode mě:tento přístup je mnohem více náročné na zdroje a zpracování – jen abyste věděli.



  1. 2 způsoby, jak vrátit kód ASCII pro danou postavu v MariaDB

  2. Dotaz pro získání všech řádků z předchozího měsíce

  3. Oracle:jak seskupit podle rozsahu?

  4. Oracle to Excel - postup exportu PL/SQL