Может кто-нибудь дать некоторые рекомендации по наиболее эффективному способу извлечения некоторых значений из столбца XML? Я пробовал использовать подстроку и charindex в case case, но это становится очень грязным и не лучшим исполнителем. Я бы подумал, что есть функция XML, которая будет работать лучше, но изо всех сил пытается найти какие-либо примеры в Интернете, которые используют XML что-то вроде этого;Извлечь значения из XML в SQL Server
<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. Это один из примеров, но могут быть случаи, когда значения, которые я хочу извлечь для некоторого XML, отсутствуют в других.
Пример:
Там всегда может быть Supplier="xxxx"
, но не SupplierInvoiceNumber="xxxx"
и его положение будет меняться.
Для аргументов ради, хотя, позволяет сказать, что для этого упражнения я просто хочу, чтобы вытащить
Supplier="varchar"
& SupplierInvoiceNumber="int"
Спасибо всем :)
~ D
Прекрасное спасибо! Я пробовал с xml.Value, но я пытался прочитать его так: на основе того, что я нашел в Интернете, (/ ns: Import/ns: Invoice) [1] ',' varchar (max) ') в качестве «поставщика», и вместо этого вернулись комментарии. Спасибо за очень быстрый ответ! –