Megosztás:


Operátorok elsőbbsége (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ha egy összetett kifejezés több operátort tartalmaz, az operátorok elsőbbsége határozza meg a műveletek sorrendjét. A végrehajtás sorrendje jelentősen befolyásolhatja az eredményként kapott értéket.

Az operátorok elsőbbséget élveznek az alábbi táblázatban. A magasabb szintű operátorok kiértékelése egy alacsonyabb szintű operátor előtt történik. Az alábbi táblázatban az 1 a legmagasabb, a 8 pedig a legalacsonyabb szint.

Level Operators
1 ~ (bitenkénti NOT)
2 * (szorzás), / (osztás), % (modulus)
3 +(pozitív), - (negatív), + (összeadás), + (összefűzés), - (kivonás), & (bitenkénti AND^ ), (bitenkénti kizárólagosOR), | (bitenkénti ORbaleltolás), << (bitenkénti bal eltolás), >> (bitenkénti jobb eltolás)
4 =, >, <, >=, <=, <>!=, , !>, !< (összehasonlító operátorok)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, INLIKE, ORSOME
8 = (hozzárendelés)
Level Operators
1 ~ (bitenkénti NOT)
2 * (szorzás), / (osztás), % (modulus)
3 +(pozitív), - (negatív), + (összeadás), + (összefűzés), - (kivonás), & (bitenkénti AND), ^ (bitenkénti kizárólagos OR), | (bitenkénti )OR
4 =, >, <, >=, <=, <>!=, , !>, !< (összehasonlító operátorok)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, INLIKE, ORSOME
8 = (hozzárendelés)

Ha egy kifejezés két operátora azonos elsőbbséget élvez, a kiértékelés balról jobbra történik a kifejezésben elfoglalt helyük alapján. A következő SET utasításban használt kifejezésben például a kivonási operátor kiértékelése az összeadási operátor előtt történik.

DECLARE @MyNumber AS INT;
SET @MyNumber = 4 - 2 + 27;

-- Evaluates to 2 + 27 which yields an expression result of 29.
SELECT @MyNumber;

Zárójelek használatával felülbírálhatja az operátorok definiált elsőbbségét egy kifejezésben. A zárójelen belüli összes érték kiértékelése egyetlen értéket eredményez. A zárójelen kívüli operátorok használhatják ezt az értéket.

Az alábbi SET utasításban használt kifejezésben például a szorzási operátor elsőbbsége magasabb, mint az összeadási operátor. Először a szorzási műveletet értékeli ki a rendszer. A kifejezés eredménye .13

DECLARE @MyNumber AS INT;
SET @MyNumber = 2 * 4 + 5;

-- Evaluates to 8 + 5 which yields an expression result of 13.
SELECT @MyNumber;

A következő SET utasításban használt kifejezésben a zárójelek a hozzáadás kiértékelését okozzák először. A kifejezés eredménye .18

DECLARE @MyNumber AS INT;
SET @MyNumber = 2 * (4 + 5);

-- Evaluates to 2 * 9 which yields an expression result of 18.
SELECT @MyNumber;

Ha egy kifejezés beágyazott zárójelekkel rendelkezik, először a legmélyebb beágyazott kifejezés lesz kiértékelve. Az alábbi példa beágyazott zárójeleket tartalmaz, és a kifejezés 5 - 3 a zárójelek legmélyén beágyazott halmazában található. Ez a kifejezés a 2értéket adja meg. Ezután az összeadási operátor (+) hozzáadja ezt az eredményt 4, amely a következő értéket 6adja hozzá: . Végül a 6 szorzat megszorzódik 2 a kifejezés eredményének eredményével 12.

DECLARE @MyNumber AS INT;
SET @MyNumber = 2 * (4 + (5 - 3));

-- Evaluates to 2 * (4 + 2) which then evaluates to 2 * 6, and
-- yields an expression result of 12.
SELECT @MyNumber;