Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
xml veri tipinin bir örneğine karşı bir XQuery belirtir. Sonuç xml tipindedir. Yöntem, tiplenmemiş bir XML örneği döndürür.
Sözdizimi
query ('XQuery')
Arguments
XQuery
Bir XML örneğinde öğeler ve özellikler gibi XML düğümlerini sorgulayan bir dizidir; XQuery ifadesidir.
Örnekler
Bu bölüm, xml veri tipinin query() yönteminin kullanımına örnekler sunmaktadır.
A. Query() yöntemini bir xml tipi değişkene karşı kullanmak
Aşağıdaki örnek, xml tipinde bir değişken @myDoc ilan eder ve ona bir XML örneği atar. Query() yöntemi, belgeye karşı bir XQuery belirtmek için kullanılır.
Sorgu, elemanın<Features> alt elemanını alır:<ProductDescription>
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')
Aşağıdaki çıktı sonucu göstermektedir:
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
B. Query() yöntemini XML tipi bir sütunla karşılaştırmak
Aşağıdaki örnekte, query() yöntemi, AdventureWorks veritabanındaki xmltipindeki CatalogDescription sütununa karşı bir XQuery belirtmek için kullanılır:
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ğıdaki maddelere dikkat edin:
CatalogDescription sütunu, tiplenmiş bir xml sütunudur, yani kendisiyle ilişkili bir şema koleksiyonu vardır. XQuery Prolog'da, isim alanı anahtar kelimesi, sorgu gövdesinde daha sonra kullanılan öneki tanımlar.
Query() yöntemi, < özniteliğine sahip bir öğe olan
Product>XML oluşturur; bu öğede ProductModelID özniteliği veritabanından alınır. XML yapısı hakkında daha fazla bilgi için XML Construction (XQuery) bölümüne bakınız.WHERE cümlesinde exist() yöntemi (XML veri türü ) yalnızca XML'deki öğeyi içeren <
Warranty> satırları bulur. Yine, namespace anahtar kelimesi iki namespace önekini tanımlar.
Aşağıdaki çıktı kısmi sonucu gösterir:
<Product ProductModelID="19"/>
<Product ProductModelID="23"/>
...
Soru() ve exist() yöntemlerinin her ikisi de PD önekini belirtir. Bu durumlarda, önekleri önce 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;
Ayrıca Bkz.
WITH XMLNAMESPACES ile Sorgulara Ad Alanları Ekleme
Türlü XML'i Türsüz XML ile Karşılaştır
XML Verisi Örnekleri Oluşturmak
xml Veri Türü Yöntemleri
XML Veri Değiştirme Dili (XML DML)