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

Jak rozdělím oddělený řetězec na serveru SQL bez vytvoření funkce?

Verze využívající 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)

Místo toho použijte tabulku Nahraďte @T s jakoukoli tabulkou, kterou používáte.

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

Rozdělení řetězce 'Hello John Smith' bez použití proměnné

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. Chyba MySQL 1215:Nelze přidat omezení cizího klíče

  2. SELECT / GROUP BY - časové úseky (10 sekund, 30 sekund atd.)

  3. Rychlejší způsob vkládání pomocí skriptu v Oracle?

  4. PostgreSQL + Hibernate + Spring automaticky vytváří databázi