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

Как да разделя разделен низ в SQL Server, без да създавам функция?

Версия, използваща 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)

Вместо това с помощта на таблица Заменете @T с каквато и маса да използвате.

-- 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)

Разделяне на низа 'Hello John Smith' без използване на променлива

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. Как да използвате логически оператор EXISTS в SQL Server - SQL Server / TSQL урок, част 125

  2. Оценка на присъединяване на SQL Server с помощта на грубо подравняване на хистограма

  3. Кога трябва да използвам CROSS APPLY над INNER JOIN?

  4. SQL, Помощна таблица с числа

  5. Завъртане на няколко колони въз основа на една колона в SQL Server