该问题来自社区提问。
效率不一定很高,但是肯定比替换为select union all好些,起码不用考虑因为字符串过长而导致动态sql语句过长
代码如下:
DECLARE
@str
varchar
(
1000
)
DECLARE
@idoc
int
;
DECLARE
@doc
xml;

set
@str
=
'
1¦3¦4¦25
'
set
@doc
=
cast
(
'
<Root><item><ID>
'
+
replace
(
@str
,
'
¦
'
,
'
</ID></item><item><ID>
'
)
+
'
</ID></item></Root>
'
as
xml)

EXEC
sp_xml_preparedocument
@Idoc
OUTPUT,
@doc

SELECT
*
FROM
OPENXML(
@Idoc
,
'
/Root/item
'
,
2
)
WITH
(
[
ID
]
varchar
(
10
)
)

/**/
/*
ID
-----------
1
3
4
25
*/
本文介绍了一种使用SQL和XML结合的技术来实现字符串到XML结构化数据的转换方法。通过具体的SQL脚本示例,展示了如何将包含多个ID的字符串转换为符合特定结构的XML文档,并从中提取数据。
412

被折叠的 条评论
为什么被折叠?



