从表列中的XML节点检索多条记录



我试图检索特定XML节点中存在的所有guid。XML已经存储在表中的一列中。这就是

的样子
<ArrayOfString>
<string>52ddf406-00d9-v029-d748-2ee6958bdc95</string>
<string>8902ce52-00d9-vda9-afe9-0b3fa35f88b2</string>
<string>8902ce52-00d9-v919-0cb5-0b3fa1672fb3</string>
<string>8902ce52-00d9-v064-8e24-0b401390a1a7</string>
</ArrayOfString>

这就是我要做的

SELECT ID, Cats = XC.value('(string)[1]', 'varchar(50)') 
FROM TableName 
CROSS APPLY CAST(TableName AS XML).nodes('/ArrayOfString/string') AS XT(XC)

我收到以下错误

关键字'AS'附近语法错误。

我能够检索任何特定的记录。但不是所有的记录一次。

您已经获得了<string>节点,因此您不想进一步查询它。而是查询该节点的唯一元素。

(您获取节点的语法有点偏离)。

declare @Test table (id int, data xml);
insert into @Test (id, data)
values (1,'<ArrayOfString>
<string>52ddf406-00d9-v029-d748-2ee6958bdc95</string>
<string>8902ce52-00d9-vda9-afe9-0b3fa35f88b2</string>
<string>8902ce52-00d9-v919-0cb5-0b3fa1672fb3</string>
<string>8902ce52-00d9-v064-8e24-0b401390a1a7</string>
</ArrayOfString>');
SELECT ID, Cats = XT.XC.value('text()[1]', 'varchar(50)') 
FROM @Test T
CROSS APPLY T.data.nodes('/ArrayOfString/string') AS XT (XC);

返回
<表类>ID猫tbody><<tr>152 ddf406-00d9-v029-d748-2ee6958bdc9518902 ce52-00d9-vda9-afe9-0b3fa35f88b218902 ce52-00d9-v919-0cb5-0b3fa1672fb318902 ce52-00d9-v064-8e24-0b401390a1a7

相关内容

  • 没有找到相关文章