Udostępnij za pośrednictwem


query() Method (xml Data Type)

Określa XQuery przed wystąpienie XML typ danych.Wynik jest XML typu.Metoda zwraca wartość wystąpienie bez typu XML.

query ('XQuery')

Argumenty

  • XQuery
    Jest ciągiem wyrażenie XQuery, który wykonuje kwerendę dla węzłów XML, takie jak elementy, atrybuty w wystąpieniu XML.

Przykłady

W tej sekcji podano przykłady za pomocą metoda query() XML typ danych.

A.Za pomocą metoda query() przed zmienną typu danych xml

W poniższym przykładzie deklaruje zmienną @ myDoc of XML typu i przypisuje XML wystąpienie do niego.The query() metoda is then used to specify an XQuery against the document.

Kwerenda pobiera <Features> element podrzędność <ProductDescription> element:

declare @myDoc xml
set @myDoc = '<Root>
<ProductDescription ProductID="1" ProductName="Road Bike">
<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
</ProductDescription>
</Root>'
SELECT @myDoc.query('/Root/ProductDescription/Features')

To jest wynik:

<Features>
  <Warranty>1 year parts and labor</Warranty>
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>      

B.Za pomocą metoda query() przed kolumną typu XML

W poniższym przykładzie Query() Pozwala określić XQuery przed , metodaCatalogDescription kolumna XML Wpisz AdventureWorks bazy danych:

SELECT CatalogDescription.query('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
<Product ProductModelID="{ /PD:ProductDescription[1]/@ProductModelID }" />
') as Result
FROM Production.ProductModel
where CatalogDescription.exist('
declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
declare namespace wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain";
     /PD:ProductDescription/PD:Features/wm:Warranty ') = 1

Pierwszy przycisk jest przyciskiem domyślnym.

  • Kolumna CatalogDescription jest maszynowy XML kolumny.Oznacza to, że kolekcja schematu, skojarzony z nim.W Prolog XQuery, the obszar nazw słowo kluczowe jest używany do definiowania prefiks, który jest następnie używany w treści kwerendy.

  • The query() metoda constructs XML, a <Product> element that has a ProductModelID atrybut, in which the ProductModelID atrybut value is retrieved from the database.Aby uzyskać więcej informacji na temat konstrukcji XML zobacz Budowa XML (XQuery).

  • The exist() metoda (XML data type) in the WHERE klauzula is used to find only rows that contains the <Warranty> element in the XML.Ponownie obszar nazw słowo kluczowe jest używany do definiowania dwóch prefiksów obszaru nazw.

Jest to wynik częściowy:

<Product ProductModelID="19"/> 
<Product ProductModelID="23"/> 
...

Należy zauważyć, że metody query() i exist() zadeklarować prefiks PD.W takich przypadkach można użyć WITH XMLNAMESPACES najpierw zdefiniować prefiksów i używać go w kwerendzie.

WITH XMLNAMESPACES (
   'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS PD,
   'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)
SELECT CatalogDescription.query('
<Product ProductModelID="{ /PD:ProductDescription[1]/@ProductModelID }" />
') as Result
FROM Production.ProductModel
where CatalogDescription.exist('
     /PD:ProductDescription/PD:Features/wm:Warranty ') = 1