当前位置: 首页 > 面试题库 >

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

刘阳舒
2023-03-14
问题内容

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

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

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


问题答案:

通常,我建议编写一个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



 类似资料:
  • 问题内容: 如何将逗号分隔的字符串拆分为存储过程中的字符串,并将其插入表字段中? 使用Firebird 2.5 问题答案: 这里有一个示例如何分割字符串并将子字符串写入表中:

  • 问题内容: 我有一个。所选(选中)的项目存储在中。 例如,选择的值超过7天 我正在转换为以逗号分隔的,即 现在,我将此值作为字符串传递给存储过程。我想触发查询,如: 我的问题是:如何在存储过程中分离字符串? 问题答案: 如果传递逗号分隔(任何分隔符)的字符串来存储过程并在查询中使用,那么必须吐出该字符串,然后才能使用它。 下面有例子:

  • 问题内容: 我有一个表,其中的列数据采用以下格式(行号仅表示行号)。 我想使用逗号(,)作为分隔符来分割字符串,将所有内容都列在单个列中,然后插入到新表中。 输出应该是这样的(行号只是表示行号): 谁能帮我做到这一点? 问题答案:

  • 问题内容: 我为几个表创建触发器。触发器具有相同的逻辑。我将要使用一个通用的存储过程。但是我不知道如何处理 插入 和 删除的 表。 例子: 问题答案: 您可以使用表值参数存储触发器中插入/删除的值,并将其传递给proc。例如,如果您在proc中所需的全部是UNIQUE : 然后从触发器中传递插入/删除的ID,例如:

  • 问题内容: 我对Java还是很陌生,并且遇到了一个特定的家庭作业问题,在该问题上,字符串得到了传递,然后我必须将其从此拆分成与所传递的Integer相等的部分。 例如:输入字符串“ HelloWorld”,必须将其除以2,然后将这些部分放入具有以下两个部分的数组中:array [hello,world]。 反正有使用FOR循环执行此操作吗? 到目前为止,我的代码将整个String输入每个数组元素。

  • 我有数字,我想在存储过程中将这些数字转换成字符串。 请回复。 谢谢!