簡體   English   中英

SQL 服務器 - OPENXML 如何獲取屬性值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM