Query() metoda (xml typ danych)
Określa XQuery przeciwko wystąpienie xml typu danych.Wynik jest xml typu.metoda zwraca wystąpienie XML bez typu.
Składnia
query ('XQuery')
Argumenty
- XQuery
Jest ciąg , XQuery wyrażenie, że kwerendy dla węzłów XML, takie jak elementy i atrybuty XML wystąpienie.
Przykłady
W tej sekcji podano przykłady przy użyciu metoda query() z xml typu danych.
A.Za pomocą metoda query() wobec zmiennej typu xml
Poniższy przykład deklaruje zmienną @ "mójdok" z xml wpisz i przypisuje do niego XML wystąpienie .**Query()**metoda jest następnie używana do określania XQuery przeciwko dokumentu.
Kwerenda pobiera <Features> elementupodrzędność elementu <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')
Jest to wynikiem:
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
B.Przy użyciu metoda query() przeciwko typ XML kolumna
W poniższym przykładzie query() metoda jest używana do określenia XQuery przeciwko CatalogDescription kolumna xml należy wpisać w AdventureWorks2008R2 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
Poniższe z poprzedniej kwerendy:
CatalogDescription kolumna jest wpisany xml kolumna .Oznacza to, że ma schematu kolekcja z nią skojarzone.W XQuery prologu, obszaru nazw słowo kluczowe jest używany do definiowania prefiks, który jest później wykorzystywany w treści kwerendy.
Query() metoda konstrukcji XML, <Product> elementu, który ma ProductModelID atrybut, w którym ProductModelIDwartośćatrybut jest pobierane z bazy danych. Aby uzyskać więcej informacji na temat konstrukcji XML, zobacz Budowa XML (XQuery).
Exist() metoda (typ danych XML) w klauzula WHERE jest używane do wyszukiwania tylko tych wierszy, które zawiera <Warranty> element XML.Ponownie obszaru nazw słowo kluczowe jest używane do definiowania dwóch prefiksy obszarów nazw.
Jest częściowo wynikiem:
<Product ProductModelID="19"/>
<Product ProductModelID="23"/>
...
Należy zauważyć, że metody query() i exist() oświadczają, prefiksu PD.W takich przypadkach można użyć Z XMLNAMESPACES najpierw zdefiniować prefiksy i użyć 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