Aracılığıyla paylaş


Query() Yöntem (xml veri türü)

örnek karşı bir XQuery belirtir XML veri türü.Sonuç kullanılır XML türü.Yöntem türlenmemiş XML örneğini döndürür.

query ('XQuery')

Bağımsız değişkenler

  • XQuery
    Öğeleri gibi XML düğümleri için sorgular, XQuery ifade, bir dize öznitelikleri, XML örnek belirtilir.

Örnekler

Bu bölümde, query() yöntem kullanarak örnekleri verilmektedir XML veri türü.

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

Aþaðýdaki örnek, bir değişken bildirir. @ myDoc of XML türü ve atar XML için örnek.The query() yöntem is then used to specify an XQuery against the document.

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

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 oluşur:

<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ütun karşı query() yöntem kullanarak

Aşağıdaki örnekte, Query() yöntem karşı bir XQuery belirtmek için kullanılırCatalogDescription sütun XML türüAdventureWorks 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ütunu bir yazılı olduğu XML sütun.Bu, kendisiyle ilişkili bir şema koleksiyon olduğu anlamına gelir.Içinde XQuery giriş, the ad alanı anahtar sözcük sorgu gövdesinde sonraki kullanılan önek tanımlamak için kullanılır.

  • The query() yöntem constructs XML, a <Product> element that has a ProductModelID öznitelik, in which the ProductModelID öznitelik value is retrieved from the database.XML oluşturma hakkında daha fazla bilgi için bkz: XML işçi (XQuery).

  • The exist() yöntem (XML data type) in the WHERE yan tümce is used to find only rows that contains the <Warranty> element in the XML.Yeniden ad alanı anahtar sözcüğü, iki ad önekleri tanımlamak için kullanılır.

Bu kısmi kaynaklanır:

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

Query() ve exist() yöntemleri PD önek bildirmek olduğunu unutmayın.Bu durumda, ilk önekleri tanımlamak ve bu sorguda kullanmak için WITH XMLNAMESPACES 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