Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если сложное выражение содержит несколько операторов, порядок выполнения этих операторов определяется их приоритетом. Порядок выполнения может существенно повлиять на значение результата.
Уровни приоритета операторов показаны в следующей таблице. Оператор с более высоким уровнем выполняется прежде, чем оператор с более низким уровнем.
| Уровень | Операторы |
|---|---|
1 |
~ (побитовое НЕ) |
2 |
* (умножение), / (деление), % (остаток от деления) |
3 |
+ (положительное), - (отрицательное), + (сложение), (+ объединение), - (вычитание), & (побитовое И) |
4 |
=, >, <, >=, <=, <>, !=, !>, !< (операторы сравнения) |
5 |
^ (побитовое исключительное ИЛИ), | (побитовое ИЛИ) |
6 |
NOT |
7 |
AND |
8 |
ALL, ANY, BETWEEN, IN, LIKE, OR, SOME |
9 |
= (присваивание) |
Если два оператора в выражении имеют один и тот же уровень старшинства, они выполняются в порядке слева направо по мере их появления в выражении. Например, если выражение использует инструкцию SET, то оператор вычитания будет выполнен до оператора сложения.
DECLARE @MyNumber int
SET @MyNumber = 4 - 2 + 27
-- Evaluates to 2 + 27 which yields an expression result of 29.
SELECT @MyNumber
Чтобы изменить приоритет операторов в выражении, следует использовать скобки. Вначале все выражение внутри скобок рассчитывается до получения одного значения, которое затем может быть использовано любым оператором за пределами скобок.
Например, если выражение использует инструкцию SET, то у оператора умножения более высокий приоритет, чем у оператора сложения. Поэтому он вычисляется первым, и результатом выражения будет 13.
DECLARE @MyNumber int
SET @MyNumber = 2 * 4 + 5
-- Evaluates to 8 + 5 which yields an expression result of 13.
SELECT @MyNumber
В выражении с инструкцией SET скобки показывают, что сначала необходимо выполнить операцию сложения. Результатом выражения будет 18.
DECLARE @MyNumber int
SET @MyNumber = 2 * (4 + 5)
-- Evaluates to 2 * 9 which yields an expression result of 18.
SELECT @MyNumber
Если в выражении содержатся вложенные скобки, то сначала вычисляется результат наиболее глубоко вложенных скобок. В следующем примере показано использование вложенных скобок, в наиболее глубоко вложенных скобках записано выражение 5 - 3. Результатом этого выражения будет 2. После этого оператор сложения (+) добавляет к этому результату 4. Это приводит к новому значению 6. Наконец, 6 умножается на 2, чтобы получить результат выражения 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
См. также
Справочник
Операторы (Transact-SQL)
Функции (Transact-SQL)