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

Jak podzielić ciąg rozdzielany w programie SQL Server bez tworzenia funkcji?

Wersja używająca XML.

declare @S varchar(100) = 'Hello John Smith'

select 
  n.r.value('.', 'varchar(50)')
from (select cast('<r>'+replace(@S, ' ', '</r><r>')+'</r>' as xml)) as s(XMLCol)
  cross apply s.XMLCol.nodes('r') as n(r)

Zamiast tego użyj tabeliZastąp @T z jakimkolwiek stołem, którego używasz.

-- Test table
declare @T table (ID int, Col varchar(100))
insert into @T values (1, 'Hello John Smith')
insert into @T values (2, 'xxx yyy zzz')

select 
  T.ID,
  n.r.value('.', 'varchar(50)')
from @T as T
  cross apply (select cast('<r>'+replace(replace(Col,'&','&amp;'), ' ', '</r><r>')+'</r>' as xml)) as S(XMLCol)
  cross apply S.XMLCol.nodes('r') as n(r)

Dzielenie ciągu 'Hello John Smith' bez użycia zmiennej

select 
  n.r.value('.', 'varchar(50)')
from (select cast('<r>'+replace('Hello John Smith', ' ', '</r><r>')+'</r>' as xml)) as s(XMLCol)
  cross apply s.XMLCol.nodes('r') as n(r)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Jak wybrać wszystkie dni w zakresie dat, nawet jeśli przez kilka dni nie ma żadnych danych

  2. Używanie SQL Server jako magazynu obrazów

  3. Bezpośredni dostęp do bazy danych serwera SQL w Xamarin.Forms

  4. Trzy najważniejsze trendy wpływające na administratorów baz danych odpowiedzialnych za monitorowanie SQL Server

  5. TSQL - Dodaj kolumnę do wszystkich tabel w bazie danych [Przykład kursora]