我有一个要求,我在数据库中有XML数据列,我需要从数据库中的行XML数据列中提取值的形式。我的XML就像
<ListID><ID>169346</ID><ID>289492</ID><ID>315264</ID><ID>415265</ID></ListID>
<ListID><ID>169356</ID><ID>299492</ID><ID>315264</ID><ID>415265</ID></ListID>
我希望数据像
一样上拉 ID
169346
289492
315264
415265
169356
299492
315264
415265
答案 0 :(得分:1)
您可以使用以下内容:
SELECT XC.value('.', 'int')
FROM dbo.YourTableHere
CROSS APPLY XmlColumn.nodes('//ID') AS XT(XC)
这基本上采用XML列中存在的每个<ID>
元素,并将值提取为int
并在结果集中显示它们。
更新,提及我有XML数据列,我假设您的SQL Server表中的列实际上是类型为XML
。它应该是,如果你在其中存储XML!
但如果不是 - 那么在我的代码示例中使用函数.nodes()
之前,您需要先将列转换为XML:
SELECT XC.value('.', 'int')
FROM dbo.YourTableHere
CROSS APPLY CAST(YourColumn AS XML).nodes('//ID') AS XT(XC)
答案 1 :(得分:0)
另一种方法是将其转换为XML
&amp;然后将其转换为行:
SELECT split.a.value('.', 'varchar(max)') ID
FROM
(
SELECT CAST(ID AS XML) AS String from <table_name>
) a
CROSS APPLY String.nodes('//ID') AS split(a);
结果:
ID
169346
289492
315264
415265
169356
299492
315264
415265