Основы языка Transact-SQL. Основные элементы Transact-SQL. Типы данных MS SQL Server. Выражения Transact-SQL, страница 5

70

Операнды SQL Server делятся на следующие типы. Константы - постоянные величины различных типов, значения которых не изменяются. Переменные - именованные области памяти определенного объема, в которых хранятся данные. Физически переменная – это последовательность из одного или нескольких байт. Сервер обрабатывает последовательность, представляющую значение переменной, с учетом типа данных, ассоциированного с этой переменной.

Имена столбцов. В качестве операнда может выступать столбец таблицы. Такой подход часто используется при обработке данных в таблице, удовлетворяющих определенному критерию. Функции – именованные программы (обычно небольшие), выполняющие обработку данных и возвращающие определенный результат. Функции могут иметь и не иметь входные параметры. Как и в других языках, функции реализуют часто выполняемые алгоритмы, что избавляет от многократного написания одного и того же кода.

Подзапросы. В качестве выражения можно указать подзапрос, который подготовит нужный набор данных. По использованию это эквивалентно указанию столбца таблицы, только в случае подзапроса данные не нужно явно «закачивать» в таблицу. Сервер «сам» сделает всю работу: создаст временную таблицу с требуемой структурой, скопирует в нее выбранные данные и подключит полученный набор данных в качестве выражения.

73

Конструкции CASE, NULLIF, COALESCE - позволяют использовать логическое условие для определения возвращаемого результата.

5. ОПЕРАТОРЫ

Операторы Transact-SQL – это знаки операций над одним или несколькими простыми выражениями для создания более сложного выражения. Рассмотрим виды операторов.

75

Простейшие операторы - унарные операторы, которые работают только с одним операндом. Эти операторы используются с любыми величинами числового типа. Таких операторов три: + (-) для обозначения положительного (отрицательного) числа, ~ для получения дополнения числа (выполняется побитовая операция инверсии над числовым операндом - каждый бит числа дополняется до единицы).

Пример использования простейших операторов

77

Оператор присваивания – используется для присваивания переменной определенного значения, полученного в результате вычисления выражения. Имеется один оператор присваивания - знак равенства =. Помимо присваивания, знак равенства также используется в качестве оператора сравнения.

78

Пример использования оператора присваивания

DECLARE @@variableX int SET @@variableX=10

Арифметические операторы - это знаки бинарных операций, выполняемых над операндами, имеющими числовой тип данных. К ним относятся: сложение +, вычитание -, умножение *, деление /, получение остатка от деления %. Операторы + и – также используются для выполнения операций с величинами типа datetime и smalldatetime.

80

Примеры использования арифметических операторов

?

Арифметические операторы возвращают значение того же типа, что и входные значения. В 3-м выражении примера выше использовано нецелочисленное значение (5.0) и получен правильный нецелочисленный результат (8.6 - разделитель дробной части зависит от настроек операционной системы). В 4-м выражении все операнды имели те же значения, но целочисленный тип, поэтому результат также был целочисленный (округленный вниз, т.е. неправильный).

Строковые операторы. Единственная операция, которую можно непосредственно производить над операндами символьного типа – это конкатенация (слияние строк). Для обозначения конкатенации используется оператор +.

83

Пример использования конкатенации

(в примере использована встроенная функция RTRIM, которая возвращает строковое выражение, удаляя все завершающие пробелы).

Операторы сравнения - дают информацию о сравнительной величине операндов: равно =, больше >, меньше <, меньше или равно <=, больше или равно >=, не равно != или <>, не менее чем !<, не более чем !>. Результат выполнения оператора сравнения – значение TRUE, если условие выполняется, или FALSE – если нет. Если сравнение невозможно (например, при несовпадении типов данных), то возвращается неопределенное значение NULL. Для обработки результатов сравнения используются команды IF.