Precedência dos operadores (Transact-SQL)
Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Quando uma expressão complexa tiver vários operadores, a precedência de operador determinará a sequência de operações. A ordem de execução pode afetar o valor resultante significativamente.
Os níveis de precedência dos operadores são mostrados na tabela a seguir. Um operador em níveis superiores é avaliado antes de um operador em um nível inferior. Na tabela a seguir, 1 é o nível mais alto e 8 é o nível mais baixo.
Nível | Operadores |
---|---|
1 | ~ (Não de bit a bit) |
2 | * (Multiplicação), / (Divisão), % (Módulo) |
3 | + (Positivo), - (Negativo), + (Adição), + (Concatenação), - (Subtração), & (E bit a bit), ^ (OU exclusivo bit a bit), | (OU bit a bit) |
4 | =, >, <, >=, <=, <>, !=, !>, !< (Operadores de comparação) |
5 | NOT |
6 | AND |
7 | ALL, ANY, BETWEEN, IN, LIKE, OR, SOME |
8 | = (Atribuição) |
Quando dois operadores em uma expressão tiverem o mesmo nível de precedência, eles serão avaliados da esquerda para a direita em sua posição na expressão. Por exemplo, na expressão usada na seguinte instrução SET
, o operador de subtração é avaliado antes do operador de adição.
DECLARE @MyNumber INT;
SET @MyNumber = 4 - 2 + 27;
-- Evaluates to 2 + 27 which yields an expression result of 29.
SELECT @MyNumber;
Use parênteses para substituir a precedência definida dos operadores em uma expressão. Tudo dentro dos parênteses é avaliado para produzir um único valor. Esse valor pode ser usado por qualquer operador fora desses parênteses.
Por exemplo, na expressão usada na seguinte instrução SET
, o operador de multiplicação tem uma precedência maior que o operador de adição. A operação de multiplicação é avaliada primeiro; o resultado da expressão é 13
.
DECLARE @MyNumber INT;
SET @MyNumber = 2 * 4 + 5;
-- Evaluates to 8 + 5 which yields an expression result of 13.
SELECT @MyNumber;
Na expressão usada na seguinte instrução SET
, os parênteses fazem a adição ser avaliada primeiro. O resultado da expressão é 18
.
DECLARE @MyNumber INT;
SET @MyNumber = 2 * (4 + 5);
-- Evaluates to 2 * 9 which yields an expression result of 18.
SELECT @MyNumber;
Se uma expressão tiver parênteses aninhados, a expressão mais aninhada será avaliada primeiro. O exemplo a seguir contém parênteses aninhados, com a expressão 5 - 3
no conjunto de parênteses mais aninhado. Essa expressão gera um valor de 2
. Em seguida, o operador de adição (+
) adiciona esse resultado a 4
, que produz um valor de 6
. Finalmente, os 6
são multiplicados por 2
para gerar um resultado de expressão de 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;
Consulte Também
Operadores lógicos (Transact-SQL)
Operadores (Transact-SQL)
Funções internas (Transact-SQL)