Oracle-12c

根據 XML 屬性選擇數據

  • September 20, 2019

我的表包含兩列:分支和數據

這是一個例子:

具有價值財務數據的分支具有

價值 xml 數據包,即

<field id="0" value="2200"/>
             <field id="2" value="9048001001234567890"/>
             <field id="3" value="000000"/>
             <field id="4" currency="356" type="amount" value="100.00"/>
             <field id="7" value="0702175451"/>
             <field id="11" value="818317649211"/>

數據列包含一些 XML 數據包。我想從那個 XML 中選擇一些特定的數據。例如,我只想選擇欄位 id=4 的值(即 100.00)。

我怎樣才能做到這一點?

根據您的樣本數據和修改後的問題: id=4 result 100.00

桌子:

Create Table #tbl
(
id Int,
[data] xml
)
Insert Into #tbl Values
(1,'<field id="0" value="2200"/> <field id="2" value="9048001001234567890"/> <field id="3" value="000000"/> <field id="4" currency="356" type="amount" value="100.00"/> <field id="7" value="0702175451"/> <field id="11" value="818317649211"/> ')

詢問:

SELECT 
      Cast(d.value('(./@value)[1]', 'VarChar(20)') As Decimal(10,2)) AS yourdata
FROM 
      #tbl 
      CROSS APPLY [data].nodes('/field') t(d)
Where  d.value('(./@id)[1]', 'Int') = 4

結果:

yourdata
100.00

如果以下 (SQL SERVER) 不符合要求,請包括您的範例數據和預期輸出。我不確定你參考的是什麼

$$ Branch data Finance $$. 根據您的第二句話,我創建了一個包含 2 列的表,其中第一列是您的 id,第二列是您的 xml 數據。查詢檢索 id=26 的“數據” 桌子:

Create Table #tbl
(
id Int,
[data] xml
)
Insert Into #tbl Values
(1,'<yourecord><data>1111</data></yourecord>'),
(26,'<yourecord><data>4879</data></yourecord>'),
(35,'<yourecord><data>9999</data></yourecord>')

詢問:

SELECT 
      id,
      d.value('(./data)[1]', 'VARCHAR(500)') AS yourdata
FROM 
      #tbl 
      CROSS APPLY [data].nodes('/yourecord') t(d)
Where id = 26

   Drop Table #tbl

結果:

id  yourdata
26  4879

引用自:https://dba.stackexchange.com/questions/246658