sql >> Database >  >> RDS >> Sqlserver

Hoe een string in sql server 2008 te splitsen met behulp van de opgeslagen procedure en de gegevens in de tabel in te voegen?

In het algemeen zou ik willen voorstellen om een ​​CLR-functie te schrijven die strings splitst op regex of SQL-tabelwaardefunctie, maar in dat geval kun je iets eenvoudigs proberen, zoals het converteren van je string naar xml en het ontleden:

declare @str nvarchar(max) = 'date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8'
declare @data xml

select @str = replace(@str, '=', '="')
select @str = replace(@str, '|', '" ')
select @str = replace(@str, '^', '"/><row ')
select @str = '<row ' + @str + '"/>'

select @data = cast(@str as xml)

select
    t.c.value('@date', 'nvarchar(max)') as [date],
    t.c.value('@age', 'nvarchar(max)') as [age]
from @data.nodes('row') as t(c)

sql fiddle-demo



  1. Hoe seconden af ​​te trekken van postgres datetime

  2. MySQL-vraag - Hoe om te gaan met meerdere soorten gebruikers - één tabel of meerdere?

  3. Kan niet inloggen op SQL Server + SQL Server-verificatie + fout:18456

  4. PL/SQL onvoldoende privileges binnen een query handmatig mogelijk