При построении выражений допускаются вызовы многих скалярных функций, в том числе следующих:
· функции, обрабатывающие строковые значения;
· функции, обрабатывающие даты;
· математические функции;
· системные функции;
· другие функции, например, выполняющие преобразования данных от одного типа к другому.
Конструктор запросов помогает работать с функциями, выполняя следующие действия:
· правильная расстановка кавычек в аргументах функций;
· проверка типов данных для аргументов;
· проверка типов данных для возвращаемых значений.
Ниже перечислены часто используемые скалярные функции.
Функции, обрабатывающие строковые значения
Функция
Описание
Пример
LCASE( ), LOWER( )
Преобразует строковые значения к нижнему регистру
SELECT UPPER(substring(lname, 1, 1)) + LOWER(substring (lname, 2, 99))FROM employee Отображает фамилию с преобразованием первой буквы в прописную и остальных букв в строчные.
LTRIM( )
Удаляет пробелы в начале строкового значения
SELECT stor_name, LTRIM(stor_address)FROM stores Отображает адрес после удаления лишних пробелов в начале.
SUBSTRING( )
Извлекает из строкового значения один или несколько знаков
SELECT SUBSTRING(phone,1,3)FROM employee Отображает первые три знака (код города) в телефонном номере.
UCASE( ), UPPER( )
Преобразует знаки к верхнему регистру
SELECT * FROM employeeWHERE UPPER(lname) = 'SMITH' Преобразует содержимое столбца lname к верхнему регистру перед выполнением сравнения с образцом (во избежание несовпадений при поиске с учетом регистра).
Функции, обрабатывающие даты
Функция
Описание
Пример
DATEDIFF( )
Рассчитывает интервал между двумя датами.
SELECT fname, lname, hire_dateFROM employeeWHERE DATEDIFF(year, hire_date, getdate()) > 5 Обнаруживает всех сотрудников, нанятых более пяти лет назад.
DATEPART( )
Возвращает указанную часть значения столбца даты или даты-времени: день, месяц или год.
SELECT DATEPART(year, hire_date)FROM employee Отображает год найма сотрудника (а не полную дату).
Округляет число до указанного количества десятичных разрядов
SELECT ROUND(qty * (price * discount), 2)FROM sales Отображает общую цену после скидки с округлением до двух десятичных разрядов.
FLOOR( )
Округляет число до ближайшего (минимального) целого числа
UPDATE titlesSET price = FLOOR(price) Округляет все цены в таблице titles до ближайшего целого значения.
CEILING( )
Округляет число до ближайшего (максимального) целого числа
INSERT INTO archivetitleSELECT title, CEILING(price)FROM titles Копирует столбцы title и price (с округлением до ближайшего целого числа сверху) из таблицы titles в таблицу archivetitle.
Системные функции
Функция
Описание
Пример
DATALENGTH( )
Возвращает количество байтов в указанном выражении
SELECT DATALENGTH(au_lname + ', ' + au_fname)FROM authors Возвращает список количества байтов, требуемых для комбинаций имен и фамилий.
USER( ), USER_NAME( )
Возвращает имя текущего пользователя
.
SELECT company_name, city, phoneFROM customersWHERE salesperson = USER_NAME() Создает список клиентов для продавца, выполняющего запрос.
Другие функции
Функция
Описание
Пример
CONVERT( )
Преобразует данные от одного типа данных к другому. Используется для форматирования данных или для преобразования содержимого столбца данных, используемого в аргументе функции, которая требует другой тип данных.
SELECT 'Hired: ' + CONVERT(char (11), hire_date)FROM employee Отображает дату с предшествующей подписью; функция CONVERT( ) создает из даты строковое значение, которое объединяется со строковым литералом.
SOUNDEX( )
Возвращает код Soundex для указанного выражения; используется для поиска по условию «звучат аналогично».