Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка - обединяване на резултатите в един низ

Ако използвате SQL Server 2005 или по-нова версия, можете да използвате този ЗА XML ПЪТ И НЕЩО трик:

DECLARE @CodeNameString varchar(100)

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

FOR XML PATH('') по същество свързва вашите низове заедно в един, дълъг XML резултат (нещо като ,code1,code2,code3 и др.) и STUFF поставя знак "нищо" на първия знак, напр. изтрива "излишната" първа запетая, за да ви даде резултата, който вероятно търсите.

АКТУАЛИЗИРАНЕ: Добре – разбирам коментарите – ако текстът ви в таблицата на базата данни вече съдържа знаци като < , > или & , след това моето текущо решение всъщност ще ги кодира в < , > и & .

Ако имате проблем с това XML кодиране - тогава да, трябва да погледнете решението, предложено от @KM, което работи и за тези знаци. Една дума предупреждение от мен:този подход е много повече интензивни ресурси и обработка - само да знаете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате sqlcmd &bcp на Red Hat

  2. Заявка за изброяване на броя на записи във всяка таблица в база данни

  3. Инструкция CASE в клаузата WHERE в SQL Server 2008

  4. Колко важен е редът на колоните в индексите?

  5. Динамични централни колони в SQL Server