1
create table [Trades] (
[Id] int not null
,[TradeXML] xml not null
)
表,这里的TradeXML XML列
<Trade>
<Arg>
<Name>Id</Name>
<Data>
<DataItem DataType="8"></DataItem>
</Data>
</Arg>
<Arg>
<Name>Function</Name>
<Data>
<DataItem DataType="8">CapFloor</DataItem>
</Data>
</Arg>
<Arg>
<Name>Curve</Name>
<Data>
<DataItem DataType="8">EURCurve</DataItem>
</Data>
</Arg>
<Arg>
<Name>Rates</Name>
<Data>
<DataItem DataType="5">2.175</DataItem>
<DataItem DataType="5">2.169</DataItem>
<DataItem DataType="5">2.714</DataItem>
<DataItem DataType="5">3.394</DataItem>
<DataItem DataType="5">3.931</DataItem>
<DataItem DataType="5">4.477</DataItem>
<DataItem DataType="5">4.296</DataItem>
</Data>
</Arg>
<Arg>
<Name>Index</Name>
<Data>
<DataItem DataType="8">EURIBOR</DataItem>
</Data>
</Arg>
</Trade>
这个SQL
select Node.Name.value('.', 'varchar(100)') Label
from Trades as t
cross apply t.TradeXML.nodes('//Arg/Name') Node(Name)
回报5的内容行:
Id
Function
Curve
Rates
Index
个
这个SQL
select Data.Name.value('.','varchar(100)') Value
from Trades as t
cross apply t.TradeXML.nodes('//Arg/Data/DataItem[1]') Data(Name)
返回5行:
CapFloor
EURCurve
2.175
EURIBOR
这
select Attribute.Name.query('local-name(.)') Attribute
,Attribute.Name.value('.', 'varchar(100)') Value
from Trades as t
cross apply t.TradeXML.nodes('//@*') Attribute(Name)
返回11行:
DataType 8
DataType 8
DataType 8
DataType 5
DataType 5
DataType 5
DataType 5
DataType 5
DataType 5
DataType 5
DataType 8
但什么我想是这样的组合(所以基本上名称,(第一)的DataItem值和(第一)的DataItem的数据类型属性的值),就像这样:我在保存它
Id
Function CapFloor 8
Curve EURCurve 8
Rates 2.175 5
Index EURIBOR 8
rextester玩耍。我试图自己结合他们,但没有设法得到正确的结果。 任何帮助将不胜感激!
看起来那么简单,真棒,谢谢! – Eddict