XQuery İşletmenleri karşı xml veri türü
XQuery aşağıdaki işleçleri destekler:
Sayısal işleç (+, -, *, div mod)
(Eq, ne, lt, gt, le, ge) değer karşılaştırma işleçleri
Genel karşılaştırma işleçleri (=,! =, <, >, <=, >=)
Bu işleçleri hakkında daha fazla bilgi için bkz: Karşılaştırma ifadeleri (XQuery)
Örnekler
A.Genel işleçleri kullanma
Sorgu serileri de dizileri karşılaştırmak için geçerli genel işleçler kullanımını göstermektedir.Sorgu için her müşterinin telefon numaralarının sırasını alır AdditionalContactInfo sütunu kişi tablo.Bu sıra, daha sonra iki telefon numarası ("111-111-1111", "222 Güneş") sırası ile karşılaştırılır.
Sorguyu kullanır = karşılaştırma işleç.Her düğümü sağ tarafında sıradaki = işleç sol tarafında sıradaki her düğüm ile karşılaştırılır.Eşleşen düğümler, düğüm karşılaştırma ise doğru.Bu bir int'e dönüştürülür ve 1 ile karşılaştırıldığında ve sorgu müşteri kodunu verir.
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 BusinessEntityID
FROM Person.Person
WHERE AdditionalContactInfo.value('
//ACI:AdditionalContactInfo//ACT:telephoneNumber/ACT:number =
("111-111-1111", "222-2222")',
'bit')= cast(1 as bit);
Önceki sorgu nasıl çalıştığını görmek için başka bir yolu vardır: Alınan her telefon telefon numarası değeri AdditionalContactInfo sütun küme iki telefon numaraları ile karşılaştırıldığında.Değer küme içinde ise, o müşteri sonucu döndürülür.
B.Sayısal işleç kullanma
+ işleç Bu sorguyu bir değer olan işleç, çünkü tek bir öğeye uygulanır.Örneğin, 1 değeri sorgu tarafından döndürülen bir lot boyutu 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.Değer işleç kullanma
Aşağıdaki sorgu alır <Picture> öğeleri burada resim boyutu, "küçük" bir ürün modeli için:
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ü her iki işlenen eq iþlecidir Atomik değerleri, sorguda değer işleç kullanılır.Genel karşılaştırma kullanarak aynı sorgu yazabilirsiniz işleç ( = ).
Ayrıca bkz.