XML列からいくつかの値を抽出する最も効率的な方法についていくつかの指針を与えてください。私はcase文の中でsubstringとcharindexを使ってみましたが、これは本当に乱雑になり、最高のパフォーマーではありません。私はもっとうまくいくが、XMLを使っている例をオンラインで見つけるのに苦労しているXML関数があると思っただろう。SQL ServerのXMLから値を抽出する
<pro:Import xmlns:pro="http://thenamespace/">
<pro:Control DatabaseName="varchar" UserName="varchar" Password="varchar" Company="varchar" Version="varchar" ErrorHandlingMode="varchar" />
<pro:Invoice RegisterInvoiceEvenIfParentOrdersAreInvalid="Bool" Tray="Varchar" Template="varchar" Supplier="varchar" SupplierInvoiceNumber="int" InvoiceDate="datetime" GrossValue="decimal" TaxValue="decimal" ImageReference="uniqueidentifier">
<pro:References>
<pro:Reference Code="varchar" Value="datetime" />
<pro:Reference Code="varchar" Value="varchar" />
</pro:References>
<pro:ParentOrders>
<pro:ParentOrder OrderNumber="varchar" />
</pro:ParentOrders>
<pro:TaxDetails>
<pro:Tax Band="varchar" Code="varchar" GrossValue="decimal" TaxValue="decimal" />
</pro:TaxDetails>
<pro:Comments>
<pro:Comment>varchar</pro:Comment>
</pro:Comments>
</pro:Invoice>
私は抽出する値は、XMLがするように、変化します。これは1つの例ですが、いくつかのXMLのために抽出したい値が他のものに存在しないときがあります。
例:
あり、常にSupplier="xxxx"
なくSupplierInvoiceNumber="xxxx"
かもしれないし、その位置が異なります。引数の便宜上
しかし、私はちょうど
Supplier="varchar"
& SupplierInvoiceNumber="int"
を引き出したい、この運動のために言うことができますおかげで、すべての:)
〜D
完全に感謝します!私はxml.Valueで試してみましたが、私はオンラインで見つけたもの(/ ns:Import/ns:Invoice)[1] '、' varchar(max) ')を' Supplier '代わりにコメントが返されました。本当に迅速な対応に感謝します! –