Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment diviser une chaîne dans SQL Server 2008 à l'aide d'une procédure stockée et insérer les données dans la table

En général, je suggérerais d'écrire une fonction CLR qui divise les chaînes par regex ou fonction table SQL, mais dans votre cas, vous pouvez essayer quelque chose de simple comme convertir votre chaîne en xml et l'analyser :

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)

démo de violon SQL