Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Функция ROW_MUMBER


Синтаксис SQL 2003

R0W_NUKBER() OVER {имя_окна (спецификация_окна)}.



DB2

Платформа DB2 не позволяет использовать предложение кадрирование, а предложение сортировка здесь необязательное.

R0W_NUMBER() OVER ([секционирование] [сортировка]).



Oracle

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

R0W_.NUMBER() OVER ([секционирование] сортировка).


Скалярные функции ANSI SQL

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


Встроенные скалярные функции

Во встроенных скалярных функциях SQL 2003 указывается текущий пользовательский сеанс и параметры текущего пользовательского сеанса, такие, как текущие привилегии. Функции CURRENT DATE, CURRENTJTME и CURRENTJ1MESTAMP, упоминаемые в 4.3, являются встроенными функциями, относящимися к категории дата/время. Хотя пять описываемых платформ содержат множество дополнительных функций, не входящих в число стандартных встроенных функций, в стандарте SQL определяются только те, которые перечислены в 4.3.



DB2

Платформа DB2 поддерживает встроенные скалярные функции SQL 2003 CURRENTDA ТЕ, CURRENTJTIME, CURRENTJ1MESTAMP, CURRENTJJSER и USER. Скалярные функции SQL 2003 CURRENTROLE, LOCALTIME, LOCAL JIMESTAMP. SESSION_USER и SYSTEMJJSER не поддерживаются.


MySQL

Платформа MySQL поддерживает все встроенные скалярные функции SQL 2003 плюс вариант Oracle под названием SYSDATE. Кроме того, MySQL поддерживает функцию NOW() как синоним функции CURRENTJMESTAMP.



Oracle

Платформа Oracle поддерживает функцию USER и функцию SYSDATE как синоним функции CURRENTTJMESTAMP.


PostgreSQL

Платформа PostgreSQL поддерживает все встроенные скалярные функции SQL 2003, за исключением функции SESSION_USER.


SQL Server

Платформа SQL Server поддерживает все встроенные скалярные функции.


Функции CASE и CAST

В ANSI SQL 2003 есть функция CASE, которую можно использовать для реализации логики управления обработкой по принципу IF-THEN в запросах и инструкциях, связанных с обновлением данных. Функция CAST предназначена для преобразования типов данных, и она также входит в стандарт ANSI. Все платформы, описываемые в этой книге, поддерживают функции CASE и CAST стандарта ANSI.


CASE

Функция CASE позволяет использовать функциональность IF-THEN-ELSE в инструкциях SELECT и UPDATE. Эта функция проверяет список условий и возвращает одно из нескольких возможных значений.

Инструкция CASE имеет два способа применения: простой и поисковый. Простые выражения CASE сравнивают одно значение (входное_значенж) со списком других значений и возвращают результат, соответствующий первому совпавшему значению. Поисковые выражения CASE позволяют проанализировать несколько логических условий, и как только одно из них оказывается истинным, выражение возвращает соответствующий этому условию результат.

Все платформы поддерживают для функции CASE синтаксис стандарта ANSI SQL 2003.

В простой функции CASE входное значение проверяется на соответствие каждому предложению WHEN. Результирующее значение возвращается при первой истинности условия входное значение=условие _when. Если ни одно из yaweuu_when не оказывается истинным, то возвращается альтернативное результирующее значение. Если это альтернативное значение не указано, возвращается NULL.

Структура более сложной булевой поисковой операции по сути аналогична струюуре простой операции сравнения, за исключением того, что для каждого предложения WHEN существует своя булева операция сравнения.

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

Примеры

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

Ниже приводится более сложная поисковая функция CASE в инструкции SELECT, которая определяет, сколько книг (titles) было продано в разные периоды с начала года.


CAST

Команда CAST неявно преобразует выражение с одним типом данных в другой тип. Все производители поддерживают стандартный синтаксис ANSI SQL.


Синтаксис SQL 2003 и описание

CAST(выражение AS тип_данных[(длина)]).

Функция CAST преобразует любое выражение, например значение в столбце или переменную, в другой, указанный тип данных. Для тех типов, которые поддерживают указание длины (например, CHAR или VARCHAR), можно указать длину.

Нужно знать, что некоторые преобразования, например такие, как преобразование значений DECIMAL к INTEGER, приводят к операциям округления. Кроме того, некоторые преобразования могут завершиться ошибкой, если у нового типа данных нет достаточно места для отображения преобразованного значения.

Примеры:

В данном примере мы извлекаем объем продаж с начала года (ytd_sales) в тип CHAR и соединяем его с определенной строкой и частью названия книги. Значение ytd_sales преобразуется в тип CHAR(5), а заголовок укорачивается, чтобы сделать его более удобным для чтения.

SELECT
CAST(ytd_sales AS CHAR(5))+’ Copies sold of ‘+CAST(title AS VARCHAR(30))
FROM titles
WHERE ytd_sales IS NOT NULL AND ytd_sales > 10000
ORDER BY ytd_sales DESC;

Результат будет следующий

22246 Copies sold of The Gourmet Microwave

18722 Copies sold of You Can Combat Computer Stress

15096 Copies sold of Fifty Years in Buckingham Pala

Источник