Поделиться через


Выражения (Transact-SQL)

Сочетание символов и операторов, используемое компонентом SQL Server Database Engine для получения одиночного значения данных. Отдельные константы, переменные, столбцы и скалярные функции являются примерами простых выражений. Для соединения двух и более простых выражений в одно сложное можно использовать операторы.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

{ constant | scalar_function | [ table_name. ] column | variable     | (expression ) | (scalar_subquery ) 
    | { unary_operator } expression 
    | expression { binary_operator } expression     | ranking_windowed_function | aggregate_windowed_function
}

Аргументы

Условие

Определение

constant

Символ, представляющий одно конкретное значение данных. Дополнительные сведения см. в разделе Константы (Transact-SQL).

scalar_function

Элемент синтаксиса языка Transact-SQL, который предоставляет определенную службу и возвращает одиночное значение. Аргумент scalar_function может быть встроенной скалярной функцией, такой как SUM, GETDATE или CAST, либо пользовательской скалярной функцией.

[ table_name.]

Имя или псевдоним таблицы.

column

Имя столбца. Только имя столбца используется в выражении.

variable

Имя переменной или параметр. Дополнительные сведения см. в разделе DECLARE @local_variable (Transact-SQL).

( expression )

Любое допустимое выражение из определенных в этом разделе. Скобки являются операторами группировки, гарантирующими, что все операторы выражения внутри скобок будут выполнены, прежде чем результирующее выражение будет объединено с другим.

( scalar_subquery )

Вложенный запрос, возвращающий одиночное значение. Например:

SELECT MAX(UnitPrice)

FROM Products

{ unary_operator }

Оператор, имеющий только один числовой операнд:

  • + обозначает положительное число.

  • - обозначает отрицательное число.

  • ~ обозначает оператор дополнения.

Унарные операторы можно применять только к выражениям, выполняемым с любыми типами данных из категории числовых типов данных.

{ binary_operator }

Оператор, определяющий способ, которым два выражения объединяются для получения одиночного результата. Аргумент binary_operator может быть арифметическим, логическим, битовым или унарным оператором, а также оператором присвоения (=), сравнения или оператором сцепления строк (+). Дополнительные сведения об операторах см. в разделе Операторы (Transact-SQL).

ranking_windowed_function

Любая ранжирующая функция языка Transact-SQL. Дополнительные сведения см. в разделе Ранжирующие функции (Transact-SQL).

aggregate_windowed_function

Любая статистическая функция языка Transact-SQL, содержащая предложение OVER. Дополнительные сведения см. в разделе Предложение OVER (Transact-SQL).

Результаты выражения

Если простое выражение состоит из отдельной константы, переменной, скалярной функции или имени столбца, то тип данных, параметры сортировки, точность, масштаб и значение выражения совпадают с типом данных, параметрами сортировки, точностью, масштабом и значением ссылаемого объекта.

При объединении двух выражений с помощью операторов сравнения или логических операторов результат будет иметь логический тип данных и может принимать одно из следующих значений: TRUE, FALSE или UNKNOWN. Дополнительные сведения о логических типах данных см. в разделе Операторы сравнения (Transact-SQL).

При объединении двух выражений с помощью арифметических, побитовых или строковых операторов тип данных результата определяется используемым оператором.

Сложные выражения, составленные из нескольких символов и операторов, вычисляются в одиночные результаты. Тип данных, параметры сортировки, точность и значение результирующего выражения определяются объединением составляющих выражений (по два за один раз) до тех пор, пока не будет получен конечный результат. Последовательность, в которой эти выражения объединяются, зависит от приоритета операторов в выражении.

Замечания

Два выражения можно объединить каким-либо оператором, если оба они относятся к типам данных, поддерживаемым оператором, и выполняется хотя бы одно из следующих условий.

  • Выражения относятся к одному типу данных.

  • Тип данных с более низким приоритетом может быть неявно преобразован в тип данных с более высоким приоритетом.

Если выражения не удовлетворяют этим условиям, функция CAST или CONVERT явным образом преобразует тип данных с более низким приоритетом или в тип данных с более высоким приоритетом, или в промежуточный тип данных, который затем может быть неявно преобразован в тип данных с более высоким приоритетом.

Если неявное или явное преобразование не поддерживается, эти два выражения объединить невозможно.

Параметры сортировки любого выражения, результатом которого является символьная строка, определяются правилами очередности параметров сортировки. Дополнительные сведения см. в разделе Очередность параметров сортировки (Transact-SQL).

В языке программирования, таком как C или Microsoft Visual Basic, вычисление выражения всегда приводит к получению единственного результата. Выражения в списке выбора инструкции языка Transact-SQL подчиняются правилу, из которого следует, что выражение применяется отдельно к каждой строке в результирующем наборе. У отдельных выражений могут быть различные значения в каждой строке результирующего набора, но у каждой строки имеется только одно значение для выражения. Например, в следующей инструкции SELECT выражениями являются как ссылка на ProductID, так и значение 1+2 в списке выбора:

USE AdventureWorks2008R2;
GO
SELECT ProductID, 1+2
FROM Production.Product;
GO

Выражение 1+2 дает результат 3 в каждой строке результирующего набора. Несмотря на то, что выражение ProductID формирует уникальное значение для каждой строки в результирующем наборе, в каждой строке содержится только одно значение для ProductID.