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

标签 sql sql-server string sql-server-2008 sqlxml

我想分割这种格式的字符串 引用:

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

。 实际上这个字符串只是一个示例,我的原始字符串非常大。我不明白的是,如果我打破这个字符串,那么在分割字符串之后我必须创建多少个变量来捕获数据,我希望将其插入到包含日期和年龄列的数据表中?我使用什么概念?(我从网络服务获取此字符串)提前致谢..

最佳答案

一般来说,我建议编写一个 CLR 函数,通过正则表达式或 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

关于sql - 如何使用存储过程在sql server 2008中拆分字符串并将数据插入表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379255/

相关文章:

mysql - 从 Select 语句中选择 : Every derived table must have its own alias

.net - Sql 包 Exe 可以在命令行中运行部署后脚本吗?

python - 将整数字符串拆分为所有可能的数字列表

Java:用方法结果替换 RegEx

mysql - 将日志文件中的数据字符串插入mysql数据库

mysql - 减去月份和日期mysql

sql - 如何根据 postgresql 中的另一列对字符串聚合进行排序?

SQL查询查找具有特定前缀的记录

sql-server - 如何避免 Mono ADO.NET 在超时后向请求提供错误结果?

java - 将文本拆分为句子并将句子拆分为单词 : BreakIterator vs regular expressions