XQuery işletmenleri karşı xml veri türü

XQuery aşağıdaki işleçleri destekler:

  • Sayısal işleçleri (+,-, *, div mod)

  • Işleçler'için değer karşılaştırması (eq, ne, lt, gt, le, ge)

  • Genel karşılaştırma işleçleri (=! = <, >, <=, >= )

Bu işleçleri hakkında daha fazla bilgi için bkz: Karşılaştırma deyimler (XQuery)

Örnekler

C.Genel işleçleri kullanma

Sorgu sıralarının ve serilerini karşılaştırmak için uygulanan genel işleçlerin kullanılışını gösterir.Sorgu, her müşteri için bir telefon numaralarının sırasını alır AdditionalContactInfo sütunIlgili kişi tablo.Bu sıra, sonra iki telefon numarası ("111-111-1111", "222-2222") sırası ile karşılaştırılır.

Sorguyu kullanan = karşılaştırma işleç.Sağ tarafında sıradaki her düğümde = işleç sol tarafındaki dizisindeki her bir düğümde karşılaştırılır.Düğümlerin aynı, düğüm karşılaştırma olur. DOĞRU.Bunun ardından bir int dönüştürülür ve 1 ile karşılaştırıldığında ve sorgu Müşteri Kimliği döndürür.

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)

Önceki sorgu çalışma şeklini gözlemek için başka bir yol vardır: Alınan her telefon telefon numarası değeriAdditionalContactInfo sütun karşılaştırılır küme iki telefon numarası.Değer kümesi içinde ise, o müşteri sonucu döndürülür.

b.Sayısal bir işleç kullanma

+ işleç bu sorguda değer işletmeni, çünkü tek bir öğe için de geçerlidir.Örneğin, 1 değeri sorgu tarafından döndürülen bir lot boyutunu eklenir:

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.Bir değer işleç kullanma

Aşağıdaki alır query <Picture>resim boyutunu "küçük" olduğu bir ürün modeline ait öğeler:

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

Çünkü iki işlenen için EQ işleç atomik değerleri, sorguda kullanılan değer işleç.Genel karşılaştırma işleç (kullanarak aynı sorgu yazabilirsiniz. = ).