小编典典

如何使用存储过程在SQL Server 2008中拆分字符串并将数据插入表中

sql

我想以这种格式拆分一个字符串Quote:

"date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8"

。实际上,这个字符串只是一个样本,我的原始字符串非常大。我不是要说的是,如果我打破了这个字符串,那么在分割字符串之后,我还需要做多少个变量才能捕获数据,我想将其插入包含日期和年龄列的数据表中吗?我使用什么概念?(我正在从Web服务获取此字符串)在此先感谢。


阅读 172

收藏
2021-04-07

共1个答案

小编典典

通常,我建议编写一个CLR函数,该函数通过regex或SQL表值函数拆分字符串,但是在这种情况下,您可以尝试一些简单的操作,例如将字符串转换为xml并进行解析:

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

2021-04-07