我正在研究一些關于 xml 決議的知識,使用我在 stackoverflow 中找到的示例,但我遇到了一個疑問。如果我有這樣的事情
DECLARE @xml xml
SET @xml =
'<?xml version="1.0" encoding="UTF-8"?>
<oo_outbound_order>
<oo_master>
<Code>123</Code>
<Name>Branan</Name>
</oo_master>
</oo_outbound_order>'
SELECT
n.value('(./Code/text())[1]','int') as CODE
, n.value('(./Name/text())[1]','Varchar(50)') as NAME
FROM @xml.nodes('/oo_outbound_order/oo_master') as a(n)
我得到這樣的東西
CODE NAME
123 Branan
但如果我想將其中一個欄位存盤為 xml
<?xml version="1.0" encoding="UTF-8"?>
<oo_outbound_order>
<Active>true</Active>
<Weight>0.02</Weight>
<oo_master>
<Code>123</Code>
<Name>Branan</Name>
</oo_master>
</oo_outbound_order>
我想得到這樣的東西
Active Weight ColWithXML
true 0.02 <oo_master><Code>123</Code><Name>Branan</Name></oo_master>
SELECT
n.value('Active[1][not(@xsi:nil = "true")]', 'BIT') as Active
, n.value('Weight[1][not(@xsi:nil = "true")]', 'DECIMAL(29,5)') as Weight
, ??????????????????
我怎樣才能做到這一點?謝謝
uj5u.com熱心網友回復:
這個答案在我的lptr評論中提供,它回答了 OP 的問題。為了保持評論的有用性,因為它們可以隨時洗掉,我將其發布為答案。
這里他們(lptr)使用資料型別的query方法( query() Method (xml Data Type))來實作你的目標。他們使用了 2 種不同但相似的解決方案:xml
a.n.query('.')DECLARE @xml xml SET @xml = '<?xml version="1.0" encoding="UTF-8"?> <oo_outbound_order> <oo_master> <Code>123</Code> <Name>Branan</Name> </oo_master> </oo_outbound_order>' SELECT n.value('(./Code/text())[1]','int') as CODE , n.value('(./Name/text())[1]','Varchar(50)') as NAME ,a.n.query('.') FROM @xml.nodes('/oo_outbound_order/oo_master') as a(n)db<>小提琴
..或者
n.query('oo_master') FROM @xml.nodes('/oo_outbound_order')DECLARE @xml xml SET @xml = '<?xml version="1.0" encoding="UTF-8"?> <oo_outbound_order> <oo_master> <Code>123</Code> <Name>Branan</Name> </oo_master> </oo_outbound_order>' SELECT n.value('(./Code/text())[1]','int') as CODE , n.value('(./Name/text())[1]','Varchar(50)') as NAME ,a.n.query('.') FROM @xml.nodes('/oo_outbound_order/oo_master') as a(n); select @xml ='<?xml version="1.0" encoding="UTF-8"?> <oo_outbound_order> <Active>true</Active> <Weight>0.02</Weight> <oo_master> <Code>123</Code> <Name>Branan</Name> </oo_master> </oo_outbound_order>'; SELECT n.value('Active[1][not(@xsi:nil = "true")]', 'BIT') as Active , n.value('Weight[1][not(@xsi:nil = "true")]', 'DECIMAL(29,5)') as Weight , a.n.query('./oo_master') FROM @xml.nodes('/oo_outbound_order') as a(n);db<>小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/416622.html
標籤:
