Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择SQL中的所有XML属性_Sql_Sql Server_Xml_Xpath - Fatal编程技术网

选择SQL中的所有XML属性

选择SQL中的所有XML属性,sql,sql-server,xml,xpath,Sql,Sql Server,Xml,Xpath,我有一个包含在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" /> <

我有一个包含在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>
并用XML中的所有值/项填充它,以便我可以使用temp表与另一个SELECT语句连接

SELECT Data.value('(/valuelist/li/@item)[1]', 'nvarchar(50)') AS Item
                                                    FROM ValueList
                                                    WHERE Name = 'VL_IncCompCondVL'
该语句得到第一个属性,如果我将[1]增加到[2],依此类推,我可以逐个选择每个属性。但我必须相信有一种方法可以把它们都弄到手。我试过一些变化,只是没有弄明白。我想我需要在某个地方使用*通配符。

您应该使用以下方法:


请参阅关于交叉应用的内容

我不知道它是如何工作的,但它确实有效。而SQL管理工作室中的intellisense也没有。它混淆了item.value和data.nodes。我必须去研究节点方法。非常感谢你!
SELECT Data.value('(/valuelist/li/@item)[1]', 'nvarchar(50)') AS Item
                                                    FROM ValueList
                                                    WHERE Name = 'VL_IncCompCondVL'
SELECT 
  item.value('.', 'nvarchar(50)') 
FROM 
  ValueList 
  CROSS APPLY data.nodes('/valuelist/li/@item') as T2(item) 
where 
  name='VL_IncCompCondVL'