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