Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como dividir uma string no sql server 2008 usando o procedimento armazenado e inserir os dados na tabela


Em geral, sugiro escrever uma função CLR que divida strings por regex ou função com valor de tabela SQL, mas no seu caso você pode tentar algo simples como converter sua string em xml e analisá-la:
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)

demonstração do violino sql