Основы языка Transact-SQL. Переменные. Встроенные функции. Скалярные функции, страница 2

19

Функции FLOOR, CEILING выполняют округление до целых вниз, вверх соответственно.

20

Функция POWER возводит число (первый аргумент) в степень (второй аргумент):

(выражение POWER(27,1/3) возвращает целочисленный - неправильный - результат, так как исходные данные – целые числа).

Функция SQUARE выполняет возведение числа в квадрат, а функция SQRT извлекает квадратный корень из числа.

21

Основные математические функции

22

Строковые функции - используются для работы со строковыми переменными. Рассмотрим примеры некоторых строковых функций. Функция LEN возвращает длину строки в символах:

23

Функции LTRIM, RTRIM удаляют пробелы в начале, конце строки соответственно. При вводе текстовых данных в таблицу рекомендуется всегда удалять конечные пробелы, т.к. они могут привести к появлению дублирующихся записей. Функции LEFT, RIGHT возвращают указанное количество символов строки, начиная с левого, правого края соответственно:

24

Функции LOWER, UPPER переводят все символы строки в нижний, верхний регистр соответственно. Функция STR преобразует значения числового типа в символьный формат. Аргументы функции задают: 1-й - само число, 2-й - длину символьной строки, 3-й - количество знаков после десятичной точки, которое будет переведено в строку.

25

Функция SUBSTRING возвращает для строки подстроку указанной длины, начиная с заданного символа.

26

Основные строковые функции

27

Функции для работы с датой и временем

Эти функции принимают в качестве входных значений дату и время и возвращают значения: строковые, числовые, в формате даты и времени. Нужно учитывать, что в SQL Server время считается компонентом типа данных datetime. Многие функции даты и времени имеют параметры, обозначающие единицы измерения времени, например, "год", "месяц", "минута".

28

Примеры функций для работы с датой и временем GETDATE( ) - возвращает текущее системное время (не имеет входных параметров). ISDATE(expression) - проверяет соответствие выражения одному из возможных форматов ввода даты. Если символьное выражение может быть правильно преобразовано в тип данных datetime, то возвращается 1, иначе – 0. Функция используется для предварительной проверки введенной пользователем строки на правильность формата.

29

DAY, MONTH, YEAR - возвращают число, месяц, год (соответственно) из указанной даты. DATEADD(datepart, number, date) - добавляет к дате указанное значение дней, месяцев, часов и т. д. Аргументы: 1-й - тип добавляемого значения (принимает фиксированный набор значений: year, month, …); 2-й - количество единиц, добавляемое к выбранному значению; 3-й - значение типа данных datetime.

30

DATEDIFF(datepart, startdate, enddate) - возвращает разницу между указанными частями двух дат. Например, можно подсчитать количество дней (недель, месяцев и т. д.), прошедших между двумя датами. Форматы для обозначения частей дат соответствуют форматам для функции DATEADD.

31

Функции даты и времени Transact-SQL

32

Примеры использования функций для работы с датой и временем

(используются ограниченные идентификаторы, так как в качестве имен возвращаемых столбцов взяты зарезервированные слова; хотя Year тоже «работает» )

33

Простейший способ получить только дату, «обрезав» время, - использовать несколько функций:

Если значения часов, минут, секунд в БД не хранятся и не используются, то рекомендуется автоматически «обрезать» их при вводе соответствующих данных в БД с помощью триггеров. В результате значения даты хранятся в виде текста. Но при этом теряется возможность обработки дат, используя функции для работы с датой и временем.

34

Функции конфигурирования - возвращают параметры, связанные с конфигурированием SQL Server. Имена этих функций начинаются с символов @@. Примеры некоторых из этих функций: @@CONNECTIONS - возвращает количество попыток (как успешных, так и нет) установить соединение с локальным сервером SQL Server со времени его последнего запуска. Пользователи не могут изменять значение, возвращаемое этой функцией.

35

@@LANGUAGE – показывает, какой язык является текущим.

36

@@LOCK_TIMEOUT - возвращает количество миллисекунд, которое сервер будет ожидать выполнения запроса. Для каждого подключения можно задать свое время ожидания, по истечении которого выполнение запроса прерывается. Значение по умолчанию -1, что соответствует бесконечному ожиданию. В этом случае возможны «мертвые» блокировки, когда две транзакции будут ожидать завершения друг друга. Для установки нового периода ожидания используется команда SET LOCK_TIMEOUT.