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


Функции для выражений

Функции представляют собой доступные для использования хранимые операции. В системах управления базами данных доступны основные функции. В дополнение к ним можно создавать собственные пользовательские функции.

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

  • Строковые (символьные) функции.

  • Функции даты.

  • Математические функции

  • Системные функции

  • Другие функции, например функции преобразования данных из одного типа в другой.

  • Пользовательские функции

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

Конструктор запросов и представлений делает работу с функциями проще благодаря следующим возможностям:

  • Правильная вставка кавычек в аргументы функций.

  • Проверка типа данных для аргументов.

  • Проверка типа данных для возвращаемых значений.

Сведения о функциях, поддерживаемых в базе данных, см. в документации по этой базе данных

Примечание

При создании запросов, которые выдают сводные результаты, можно использовать специальный набор функций и агрегатные функции (такие как SUM( ) и AVG( )).Дополнительные сведения см. в разделе Сводка по результатам запроса.

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

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

Function

Описание

Пример

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 employee
WHERE UPPER(lname) = 'SMITH'

Преобразует содержимое столбца lname в верхний регистр с последующим их сравнением с конкретным значением с целью избежать несовпадений при поиске с учетом регистра.

*   При вызове в качестве ODBC-функции нужно использовать следующий синтаксис: { fn LCASE(text) }.

Функции даты

Приведенные ниже функции (или иные, схожие с ними) доступны во многих базах данных.

Function

Описание

Пример

DATEDIFF( )

Вычисляет интервал между двумя датами.

SELECT fname, lname, hire_date
FROM employee
WHERE DATEDIFF(year, hire_date, getdate()) > 5

Выявляет всех сотрудников, принятых на работу более пяти лет назад.

DATEPART( )

Возвращает указанную часть столбца даты или даты и времени, включая день, месяц или год.

SELECT DATEPART(year, hire_date)
FROM employee

Выводит только год (не полную дату) приема сотрудника на работу.

CURDATE( )*,  GETDATE( ) or DATE( )

Возвращает текущую дату в формате даты и времени. Эта функция полезна как входная для многих других функций даты, например при вычислении прямого или обратного интервала времени, считая с текущей даты.

SELECT order_id
FROM orders
WHERE order_date = GETDATE()
Displays orders placed today.

Математические функции

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

Примечание

Для вычисления средних и итоговых показателей в отчетах можно использовать агрегатные функции AVG( ), COUNT( ), MAX( ), MIN( ) и SUM().

Function

Описание

Пример

ROUND( )

Округляет число до указанного числа знаков после запятой.

SELECT ROUND(qty * (price * discount), 2)
FROM sales

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

FLOOR( )

Округляет указанное число до следующего меньшего целого числа.

UPDATE titles
SET price = FLOOR(price)

Округляет все цены в таблице titles до следующего меньшего целого числа.

CEILING( )

Округляет указанное число до следующего большего целого числа.

INSERT INTO archivetitle
SELECT title, CEILING(price)
FROM titles

Копирует значения title и price (округленные до ближайшего меньшего целочисленного значения) из таблицы titles в таблицу archivetitle.

Системные функции

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

Function

Описание

Пример

DATALENGTH( )

Возвращает число байт, использованных в указанном выражении.

SELECT DATALENGTH(au_lname)
FROM authors

Выводит количество байт, требуемое для имени и фамилии.

USER( )*,  USER_NAME( )

Возвращает имя текущего пользователя.

SELECT company_name, city, phone
FROM customers
WHERE salesperson = USER_NAME()

Создает список клиентов для продавца, выполнившего запрос.

Прочие функции

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

Function

Описание

Пример

CONVERT( )

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

SELECT 'Hired: ' + CONVERT(char (11),
  hire_date)
FROM employee

Выводит дату с заголовком перед ней; функция CONVERT( ) преобразует дату в строку, что позволяет слить ее с текстовой строкой.

SOUNDEX( )

Возвращает код Soundex для указанного выражения, который можно использовать для создания поиска типа "похожее звучание".

SELECT au_lname, au_fname
FROM authors
WHERE SOUNDEX(au_fname) = 'M240'

Выполняет поиск имен, звучание которых напоминает "Майкл".

STR( )

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

SELECT str(job_id)
FROM employee

Выводит столбец job_id в отдельной строке.

См. также

Ссылки

Структура выражений

Основные понятия

Выражения в запросах

Другие ресурсы

Выполнение запросов с помощью параметров