选择SQL中的所有XML属性

我有一个包含在SQL表字段中的XML值列表,如下所示:

<valuelist xmlns="" name="VL_IncCompCondVL">
  <li value="BL" item="BLOCKED" />
  <li value="NK" item="NO KEY" />
  <li value="FL" item="FLOODED" />
  <li value="TD" item="TORN DOWN" />
  <li value="UL" item="UNABLE TO LOCATE" />
</valuelist>

我希望能够像这样创建一个临时SQL表:

CREATE TABLE #incompleteCode
(
value nvarchar(2),
item nvarchar(20)
)

并使用XML中的所有值/项填充它,以便我可以使用临时表与其他SELECT语句联接。

SELECT Data.value('(/valuelist/li/@item)[1]', 'nvarchar(50)') AS Item
                                                    FROM ValueList
                                                    WHERE Name = 'VL_IncCompCondVL'

这个声明让我第一个,如果我增加[1]到[2]等等,我可以1乘1选择每个属性。 但我必须相信有一种方法可以让他们全部获得。 我试过一些变化,我只是没有搞清楚。 我想我需要在某处使用*通配符。


你应该使用nodes方法:

SELECT 
  item.value('.', 'nvarchar(50)') 
FROM 
  ValueList 
  CROSS APPLY data.nodes('/valuelist/li/@item') as T2(item) 
where 
  name='VL_IncCompCondVL'

在这里看到有关CROSS APPLY

链接地址: http://www.djcxy.com/p/13169.html

上一篇: Select all XML attributes in SQL

下一篇: Randomizing integer behavior