Aracılığıyla paylaş


Query() yöntemi (xml veri türü)

Bir örnek karşı XQuery belirtir xml veri türü.Sonucudur xml türü.yöntem untyped xml örnek döndürür.

Sözdizimi

query ('XQuery')

Bağımsız değişkenler

  • XQuery
    Bir dize , bir XQuery ifade, öğeleri, öznitelikleri, bir xml örnekgibi xml düğümleri için sorguladığı olur.

Örnekler

Bu bölüm, query() yöntem kullanarak örnekleri sağlar xml veri türü.

A.Bir xml türü değişkeni karşı query() yöntem kullanarak

Aşağıdaki örnek bir değişken bildirir @ myDoc , xml yazın ve bir xml örnek atar.**Query()**yöntem bir XQuery karşı belgeyi belirtmek için kullanılan sonra.

Sorgu alır <Features> alt öğesi <ProductDescription> öğesi:

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')

Bu sonucu verir:

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

B.Bir xml türü sütunkarşı query() yöntem kullanarak

Aşağıdaki örnekte, query() yöntem bir XQuery karşı belirtmek için kullanılan CatalogDescription sütun xml yazın AdventureWorks2008R2 Veritabanı:

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

Önceki sorgudan aşağıdakilere dikkat edin:

  • CatalogDescription sütun bir yazılı olduğu xml sütun .Bu, kendisiyle ilişkilendirilmiş bir şema koleksiyon olduğu anlamına gelir.De XQuery giriş, ad anahtar sözcük sorgu gövdesi içinde daha sonra kullanılan önek tanımlamak için kullanılır.

  • Query() yöntem , xml yapıları bir <Product> öğesi olan bir ProductModelID öznitelik, hangi ProductModelIDöznitelik değerini veritabanından alınır. xml yapım hakkında daha fazla bilgi için bkz: xml yapım (XQuery).

  • Exist() yöntem (xml veri türü) where yan tümce içeren satırları bulmak için kullanılır, <Warranty> xml öğesi.Yeniden ad anahtar sözcüğü iki ad alaný önekleri tanımlamak için kullanılır.

Bu kısmi bir sonucudur:

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

Query() ve exist() yöntemleri pd önek bildirmek unutmayın.Bu gibi durumlarda, xmlnamespaces ile ilk önekleri tanımlamak ve bunu Sorguda kullanmak için kullanabilirsiniz.

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