Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Az XQuery a következő operátorokat támogatja:
Numerikus operátorok (+, -, *, div, mod)
Érték-összehasonlítás operátorai (eq, ne, lt, gt, le, ge)
Operátorok általános összehasonlításhoz ( =, !=, <, >, <=, >= )
További információ ezekről az operátorokról: Összehasonlító kifejezések (XQuery)
Példák
Egy. Általános operátorok használata
A lekérdezés bemutatja a sorozatokra vonatkozó általános operátorok használatát, valamint a sorozatok összehasonlítását. A lekérdezés a Kapcsolat tábla AdditionalContactInfo oszlopából kéri le az egyes ügyfelek telefonszámainak sorozatát. Ezt a sorozatot két telefonszám (111-111-1111", "222-2222") sorozatával hasonlítjuk össze.
A lekérdezés a = összehasonlító operátort használja. A = operátor jobb oldalán lévő sorozat minden csomópontját összehasonlítjuk a bal oldalon lévő sorozat minden csomópontjával. Ha a csomópontok egyeznek, a csomópontok összehasonlítása IGAZ. Ezt követően a rendszer int értékké alakítja, és összehasonlítja az 1-zel, és a lekérdezés visszaadja az ügyfélazonosítót.
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)
Az előző lekérdezés működését egy másik módon is megfigyelheti: A AdditionalContactInfo oszlopból lekért telefonszámok minden egyes értékét összehasonlítjuk két telefonszámkészlettel. Ha az érték a készletben van, a rendszer az adott ügyfelet adja vissza az eredményben.
B. Numerikus operátor használata
A + operátor ebben a lekérdezésben egy érték operátor, mivel egyetlen elemre vonatkozik. Az 1 értéket például hozzáadja egy olyan tételmérethez, amelyet a lekérdezés ad vissza:
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. Érték operátor használata
Az alábbi lekérdezés lekéri egy termékmodell <Picture> elemeit, ahol a kép mérete "kicsi":
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
Mivel a eq operátor mindkét operandusa atomi érték, az érték operátort használja a lekérdezés. Ugyanezt a lekérdezést az általános összehasonlító operátor (=) használatával is megírhatja.
Lásd még:
XQuery-függvények xml adattípusú
XML-adatok (SQL Server)
XQuery Language Reference (SQL Server)