sql - 在 SQL 中选择所有 XML 属性

标签 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" />
  <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'

参见 here关于 CROSS APPLY

关于sql - 在 SQL 中选择所有 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16245867/

相关文章:

sql - 带触发器的增量跟踪

mysql - SQL Server 与 MySQL : CONTAINS(* ,'FORMSOF(THESAURUS,word)' )

java - 如何在 Java 中从类似 XML 结构的文件中获取特定元素

php - 带有 php 或 python 属性的 xml 到 json

sql - 如何使 SQL JOIN 仅返回具有最新状态代码的一行?

sql - PostgreSQL:更新两列非常慢

sql-server - Azure SQL Server : There are multiple execution plans created if the Stored Procedure Option (Keep Plan) is set

android - 在 Android 应用程序中集成 Admob 时获取 RuntimeException

sql - 使用 XMLTYPE 输出执行 Oracle 存储过程并将其捕获到 SSIS 变量中

PHP - 确定数据是否已删除