Oracle-12c
根據 XML 屬性選擇數據
我的表包含兩列:分支和數據
這是一個例子:
具有價值財務數據的分支具有
價值 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