![](/img/trans.png)
[英]SQL Server: How to get the value of a XML element specifying an attribute?
[英]SQL Server - OPENXML how to get attribute value
我有以下 XML:
<Field FieldRowId="1000">
<Items>
<Item Name="CODE"/>
<Item Name="DATE"/>
</Items>
</Field>
我需要使用 OPENXML 獲取 FieldRowId。 到目前為止,我擁有的 SQL:
INSERT INTO @tmpField
([name], [fieldRowId])
SELECT [Name], --Need to get row id of the parent node
FROM OPENXML (@idoc, '/Field/Items/Item', 1)
編輯:我向 xml 添加了一個根節點。 並演示了搶ID。 我假設您在 xml 中有多個字段元素。 這是假設您有起始 XML; 您是否給了一個項目並且必須向上遍歷?
DECLARE @T varchar(max)
SET @T =
'<root>
<Field FieldRowId="1000">
<Items>
<Item Name="CODE"/>
<Item Name="DATE"/>
</Items>
</Field>
<Field FieldRowId="2000">
<Items>
<Item Name="CODE"/>
<Item Name="DATE"/>
</Items>
</Field>
</root>'
DECLARE @X xml
SET @X = CAST(@T as xml)
SELECT Y.ID.value('../../@FieldRowId', 'int') as FieldID,
Y.ID.value('@Name', 'varchar(max)') as "Name"
FROM @X.nodes('/root/Field/Items/Item') as Y(ID)
使用節點是 go 的方式。 OPENXML
每次使用都占用SQL服務器memory的1/8。 盡管OPENXML
和節點通常會具有相同的查詢性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.