Bagikan melalui


Operator XQuery Terhadap Tipe Data xml

Berlaku untuk:SQL Server

XQuery mendukung operator berikut:

  • Operator numerik (+, -, *, div, mod)

  • Operator untuk perbandingan nilai (eq, ne, lt, gt, le, ge)

  • Operator untuk perbandingan umum ( =, !=, <, , <>=, >= )

Untuk informasi selengkapnya tentang operator ini, lihat Ekspresi Perbandingan (XQuery)

Contoh

J. Menggunakan operator umum

Kueri mengilustrasikan penggunaan operator umum yang berlaku untuk urutan, dan juga untuk membandingkan urutan. Kueri mengambil urutan nomor telepon untuk setiap pelanggan dari kolom AdditionalContactInfo dari tabel Kontak . Urutan ini kemudian dibandingkan dengan urutan dua nomor telepon ("111-111-1111", "222-2222").

Kueri menggunakan operator perbandingan = . Setiap simpul dalam urutan di sisi = kanan operator dibandingkan dengan setiap simpul dalam urutan di sisi kiri. Jika simpul cocok, perbandingan simpul adalah TRUE. Kemudian dikonversi ke int dan dibandingkan dengan 1, dan kueri mengembalikan ID pelanggan.

WITH XMLNAMESPACES (  
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo' AS ACI,  
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes' AS ACT)  
SELECT ContactID   
FROM   Person.Contact  
WHERE  AdditionalContactInfo.value('  
      //ACI:AdditionalContactInfo//ACT:telephoneNumber/ACT:number =   
          ("111-111-1111", "222-2222")',  
      'bit')= cast(1 as bit)  

Ada cara lain untuk mengamati cara kerja kueri sebelumnya: Setiap nilai nomor telepon yang diambil dari kolom AdditionalContactInfo dibandingkan dengan set dua nomor telepon. Jika nilai dalam set, pelanggan tersebut dikembalikan dalam hasilnya.

B. Menggunakan operator numerik

Operator + dalam kueri ini adalah operator nilai, karena berlaku untuk satu item. Misalnya, nilai 1 ditambahkan ke ukuran banyak yang dikembalikan oleh kueri:

SELECT ProductModelID, Instructions.query('  
     declare namespace   
 AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";  
     for $i in (/AWMI:root/AWMI:Location)[1]  
     return   
       <Location LocationID="{ ($i/@LocationID) }"  
                   LotSize  = "{  number($i/@LotSize) }"  
                   LotSize2 = "{ number($i/@LotSize) + 1 }"  
                   LotSize3 = "{ number($i/@LotSize) + 2 }" >  
  
       </Location>  
') as Result  
FROM Production.ProductModel  
where ProductModelID=7  

C. Menggunakan operator nilai

Kueri berikut mengambil <Picture> elemen untuk model produk di mana ukuran gambar "kecil":

SELECT CatalogDescription.query('  
     declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
     for $P in /PD:ProductDescription/PD:Picture[PD:Size eq "small"]  
     return  
           $P  
    ') as Result  
FROM Production.ProductModel  
where ProductModelID=19  

Karena kedua operand ke operator eq adalah nilai atomik, operator nilai digunakan dalam kueri. Anda dapat menulis kueri yang sama dengan menggunakan operator perbandingan umum ( = ).

Lihat Juga

Fungsi XQuery terhadap Tipe Data xml
XML Data (SQL Server)
Referensi Bahasa XQuery (SQL Server)