Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если сложное выражение содержит несколько операторов, порядок выполнения этих операторов определяется их приоритетом. Порядок исполнения может существенно повлиять на результирующее значение.
Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск). |
Уровни приоритета операторов показаны в следующей таблице. Оператор с более высоким уровнем выполняется прежде, чем оператор с более низким уровнем.
Уровень |
Операторы |
|---|---|
1 |
~ (побитовое НЕ) |
2 |
* (умножение), / (деление), % (остаток от деления) |
3 |
+ (положительное), - (отрицательное), + (сложение), (+ объединение), - (вычитание), & (побитовое И), ^ (побитовое исключающее ИЛИ), | (побитовое ИЛИ) |
4 |
=, >, <, >=, <=, <>, !=, !>, !< (операторы сравнения) |
5 |
NOT |
6 |
AND |
7 |
ALL, ANY, BETWEEN, IN, LIKE, OR, SOME |
8 |
= (присваивание) |
Если два оператора в выражении имеют один и тот же уровень старшинства, они выполняются в порядке слева направо по мере их появления в выражении. Например, если выражение использует инструкцию 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;