Share via


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

Bir XQuery karşı bir örneğini belirtir xml veri türü. Sonucu olduğunu xml türü. Yöntem, yazılmamış xml örneğini döndürür.

Sözdizimi

query ('XQuery')

Bağımsız değişkenler

  • XQuery
    Öğeleri gibi xml düğümleri için sorgular, XQuery ifade, bir dize öznitelikleri, bir xml örneği olduğunu.

Örnekler

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

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

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

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

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

Sonuç şudur:

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

B.xml türü sütun karşı query() yöntemini kullanarak

Aşağıdaki örnekte, query() yöntemi bir XQuery karşı belirtmek için kullanılan CatalogDescription sütununda xml yazın 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

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 ilişkili şema koleksiyonu var demektir. İçinde 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öntemi oluşturur xml, bir <Product> sahip öğesi bir ProductModelID özniteliği, 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öntemi (xml veri türü) where yan tümcesi içeren satırları bulmak için kullanılan içinde <Warranty> XML öğesi. Yine, ad anahtar kelime iki ad alanı önekleri tanımlamak için kullanılır.

Bu kısmi bir sonucudur:

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

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

Not Thequery ve exist() yöntemleri pd önek bildirmek. Bu gibi durumlarda, ilk önekleri tanımlamak ve 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

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

Ayrıca bkz.

Kavramlar

İle sorguları WITH xmlnamespaces NameSpaces eklemek

Yazılı xml yazılmamış xml karşılaştırın

xml veri örnekleri oluşturma

xml veri değişikliği dili (xml dml)

Diğer Kaynaklar

XML veri türü yöntemleri