query() Method (xml Data Type)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Menentukan XQuery terhadap instans jenis data xml . Hasilnya adalah jenis xml . Metode mengembalikan instans XML yang tidak dititik.
Sintaks
query ('XQuery')
Argumen
XQuery
Adalah string, ekspresi XQuery, yang meminta simpul XML, seperti elemen dan atribut, dalam instans XML.
Contoh
Bagian ini menyediakan contoh penggunaan metode query() dari tipe data xml .
J. Menggunakan metode query() terhadap variabel jenis xml
Contoh berikut mendeklarasikan variabel @myDoc jenis xml dan menetapkan instans XML ke dalamnya. Metode query() kemudian digunakan untuk menentukan XQuery terhadap dokumen.
Kueri mengambil <Features
> elemen turunan dari <ProductDescription
> elemen:
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')
Output berikut menunjukkan hasilnya:
<Features>
<Warranty>1 year parts and labor</Warranty>
<Maintenance>3 year parts and labor extended maintenance is available</Maintenance>
</Features>
B. Menggunakan metode query() terhadap kolom jenis XML
Dalam contoh berikut, metode query() digunakan untuk menentukan XQuery terhadap kolom CatalogDescription jenis xml di database AdventureWorks :
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
Perhatikan item berikut dari kueri sebelumnya:
Kolom CatalogDescription adalah kolom xml yang diketik, yang berarti memiliki koleksi skema yang terkait dengannya. Di XQuery Prolog, kata kunci namespace mendefinisikan awalan yang kemudian digunakan dalam isi kueri.
Metode query() membuat XML, <>
Product
elemen yang memiliki atribut ProductModelID, tempat nilai atribut ProductModelID diambil dari database. Untuk informasi selengkapnya tentang konstruksi XML, lihat Konstruksi XML (XQuery).Metode exist() (jenis data XML) dalam klausa WHERE hanya menemukan baris yang berisi <
Warranty
> elemen dalam XML. Sekali lagi, kata kunci namespace mendefinisikan dua awalan namespace.
Output berikut menunjukkan hasil parsial:
<Product ProductModelID="19"/>
<Product ProductModelID="23"/>
...
Perhatikan metode query() dan exist() keduanya mendeklarasikan awalan PD. Dalam kasus ini, Anda dapat menggunakan WITH XMLNAMESPACES untuk terlebih dahulu menentukan awalan dan menggunakannya dalam kueri.
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;
Lihat Juga
Menambahkan Namespace ke Kueri dengan XMLNAMESPACES
Membandingkan XML Yang Dititik dengan XML Yang Tidak Dititik
Membuat Instans Data XML
Metode Tipe Data xml
Bahasa Modifikasi Data XML (XML DML)