Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL — łączenie wyników w jeden ciąg

Jeśli korzystasz z SQL Server 2005 lub nowszego, możesz użyć tego DLA ŚCIEŻKI I RZECZY XML sztuczka:

DECLARE @CodeNameString varchar(100)

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

FOR XML PATH('') zasadniczo łączy twoje ciągi w jeden, długi wynik XML (coś w rodzaju ,code1,code2,code3 itp.) i STUFF wstawia znak "nic" na pierwszy znak, np. usuwa „zbędny” pierwszy przecinek, aby uzyskać wynik, którego prawdopodobnie szukasz.

AKTUALIZACJA: OK - rozumiem komentarze - jeśli Twój tekst w tabeli bazy danych zawiera już znaki typu < , > lub & , a następnie moje obecne rozwiązanie w rzeczywistości zakoduje je w < , > i & .

Jeśli masz problem z tym kodowaniem XML - to tak, musisz spojrzeć na rozwiązanie proponowane przez @KM, które działa również dla tych znaków. Jedno słowo ostrzeżenia ode mnie:to podejście to o wiele więcej intensywne zasoby i przetwarzanie — tak, abyś wiedział.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać ostatnio wstawiony identyfikator?

  2. Jak rozszerzyć wartości oddzielone przecinkami do oddzielnych wierszy przy użyciu programu SQL Server 2005?

  3. Jak porównać 2 wiersze z tej samej tabeli (SQL Server)?

  4. Uzyskiwanie numeru tygodnia od daty w MS SQL Server 2005?

  5. Zdobądź wszystkich rodziców na dziecko