Sdílet prostřednictvím


Priorita operátorů (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Pokud komplexní výraz obsahuje více operátorů, priorita operátoru určuje posloupnost operací. Pořadí provádění může významně ovlivnit výslednou hodnotu.

Operátory mají úrovně priority uvedené v následující tabulce. Operátor na vyšší úrovni se vyhodnotí před operátorem na nižší úrovni. V následující tabulce je 1 nejvyšší úroveň a 8 je nejnižší úroveň.

Level Operators
1 ~ (bitwise NOT)
2 * (násobení), / (dělení), % (moduly)
3 +(kladné), (záporné), - (sčítání), ++ (zřetězení), - (odčítání), & (bitwise AND), (bitwise exclusive OR), | (bitwise OR), ^<< (bitový levý posun), >> (bitový pravý posun)
4 =, >, , <, >=, <=, <>, !=, , !>, ( !< relační operátory)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE, , ORSOME
8 = (přiřazení)
Level Operators
1 ~ (bitwise NOT)
2 * (násobení), / (dělení), % (moduly)
3 +(kladné), (záporné), - (sčítání), ++ (zřetězení), - (odčítání), (bitwise AND), & (bitwise exclusive ^OR), | (bitwise OR)
4 =, >, , <, >=, <=, <>, !=, , !>, ( !< relační operátory)
5 NOT
6 AND
7 ALL, ANY, BETWEEN, IN, LIKE, , ORSOME
8 = (přiřazení)

Pokud mají dva operátory ve výrazu stejnou úroveň priority, vyhodnocení se provede zleva doprava na základě jejich pozice ve výrazu. Například ve výrazu použitém v následujícím SET příkazu se operátor odčítání vyhodnotí před operátorem sčítání.

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

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

Pomocí závorek můžete přepsat definovanou prioritu operátorů ve výrazu. Vše v závorkách se vyhodnocuje tak, aby přineslo jednu hodnotu. Jakýkoli operátor mimo tyto závorky může tuto hodnotu použít.

Například ve výrazu použitém v následujícím SET příkazu má operátor násobení vyšší prioritu než operátor sčítání. Operace násobení se vyhodnotí jako první. Výsledek výrazu je 13.

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

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

Ve výrazu použitém v následujícím SET příkazu způsobí závorky první vyhodnocení přidání. Výsledek výrazu je 18.

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

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

Pokud má výraz vnořené závorky, vyhodnotí se jako první nejhůře vnořený výraz. Následující příklad obsahuje vnořené závorky s výrazem 5 - 3 v nejhlublejší sadě závorek. Tento výraz dává hodnotu 2. Operátor sčítání (+) pak přidá tento výsledek , 4který vrátí hodnotu 6. Nakonec se vynásobí 62 výsledkem výrazu 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;