Megosztás:


Operátor 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átorral rendelkezik, 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 szinteken lévő operátorok kiértékelése alacsonyabb szintű operátorok 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 NEM)
2 * (Szorzás), / (osztás), % (Modulus)
3 + (Pozitív), - (Negatív), + (Összeadás), + (Összefűzés), - (Kivonás), & (Bitwise AND), ^ (Bitwise Exclusive OR), | (Bitenkénti VAGY)
4 =, >, <, >=, <=, <>, !=, !>, !< (Összehasonlító operátorok)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE VAGY, SOME
8 = (Hozzárendelés)

Ha egy kifejezés két operátora azonos elsőbbséget élvez, a kifejezésben elfoglalt pozíciójuk alapján balról jobbra értékelik őket. Az alábbi 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 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. Ezt az értéket bármely, a zárójelen kívüli operátor használhatja.

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 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 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 , amelynek értéke 6a következő lesz: . Végül a 6 szorzat megszorzódik 2 a kifejezés eredményének eredményével 12.

DECLARE @MyNumber 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;  

Lásd még:

Logikai operátorok (Transact-SQL)
Operátorok (Transact-SQL)
Beépített függvények (Transact-SQL)