小编Chr*_*isF的帖子

无法从存储在表列中的 XML 中读取数据

我有一些数据以 XML 格式存储在表中:

<AccountTypes xmlns="">
  <Id>1003</Id>
  <Id>2</Id>
  <Id>3</Id>
  <Id>1004</Id>
  <Id>1002</Id>
  <Id>0</Id>
</AccountTypes>
Run Code Online (Sandbox Code Playgroud)

这是以前仅在 C# 代码中处理的旧数据,因此无法更改。

我现在需要阅读此内容并在存储过程中对其进行处理。到目前为止我已经得到以下代码:

DECLARE @accountTypes XML
SELECT @accountTypes = DT.AccountTypes FROM dbo.DataTable AS DT
WHERE DT.Id = 1016

DECLARE @hdoc int
    
EXEC sys.sp_xml_preparedocument @hdoc OUTPUT, @accountTypes
SELECT *
FROM OPENXML (@hdoc, '/AccountTypes/Id')
WITH(
    Id VARCHAR(10) 'Id'
    )

EXEC sys.sp_xml_removedocument @hdoc
Run Code Online (Sandbox Code Playgroud)

然而,其输出只是空行:

Id
NULL
NULL
NULL
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)

而不是我期望的 id 值。

无论是否包含colpattern('Id') 或者是否在命令flags上设置参数,我都会得到相同的结果OPENXML

我可以对当前形式的数据做些什么来从 XML 中获取实际值吗?

xml sql-server

2
推荐指数
1
解决办法
280
查看次数

标签 统计

sql-server ×1

xml ×1