Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.docx
Скачиваний:
3
Добавлен:
17.09.2019
Размер:
40.17 Кб
Скачать

Специальные функции

SQL обеспечивает набор специальных функций для преобразований значений колонок. Список таких функций приведен в таблице 8.5.

Таблица 8.5. Специальные функции

Функция

Описание

DEC0DE(E,S1,R1,S2,R2, ...,[def|)

Если E соответствует Si, то возвращается Ri, в противном случае - def или NULL, если умолчание не задано

TO_NUMBER(S)

Возвращает результат преобразования строки S в аргумент типа NUMBER

TO_CHAR(X[,F])

Возвращает результат преобразования строки S в аргумент типа DATE согласно заданному формату даты F

TO_DATE(S|,F])

Возвращает результат преобразова­ния значения параметра S символьного типа в тип DATE

В таблице EMPLOYEE для каждого служащего можно ввести признак пола - добавить колонку SEX типа CHAR(l) (0 - мужской, 1 - женский). Допустим, что вам нужен список служащих, в котором требуется разделе­ние их по признаку пола с указанием его в числовом формате; тогда можно задать такую команду:

SELECT ENAME, LNAME, AGE, 'Пол:', TO_NUMBER(SEX)

FROM EMPLOYEE

ORDER BY 5;

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

SELECT ENAME, DEC0DE(DEPN0, 10, 'Дрягин', 20,'Жиляева'. 30,'

Коротков', 'не имеет')

FROM EMPLOYEE

ORDER BY ENAME;

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

Функции для обработки даты

В диалекте SQL СУБД Oracle имеется небольшой набор функций для манипулирования колонками с типом date. Список основных функций обработки даты и времени приведен в таблице 8.6.

Таблица 8.6. Функции обработки даты и времени

Функция

Описание

SYSDATE

Возвращает текущую дату и время

ROUND(D[,F])

Округляет значение даты D согласно заданному шаблону

TRANC(D[,F|)

Усекает значение даты D согласно заданному шаблону

NEXT_DAY(D,S)

Возвращает дату дня, который является первым днем, более поздним, чем текущая дата с названием S

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

SELECT ENAME, HIREDATE, HIREDATE + 92 DAYS

FROM EMPLOYEE

WHERE HIREDATE + 92 DAYS > SYSDATE

AND DEPN0=30;

Ключевое слово SYSDATE всегда возвращает текущую дату. В этом примере также показано, как используется арифметический оператор сложения с переменными типа «дата». К переменной типа «дата» можно прибавлять и вычитать из него целое число дней, месяцев, лет, часов, минут, секунд, микросекунд. Для этого используются соответствующие ключевые слова (DAY, MONTH и т.д.), следующие за целой константой (дробная часть игнорируется, если вы указываете число с десятичной точкой). Имеется ограничение на использование скобок в таких выражениях (так, заключение в скобки выражения 1 DAYS + 1 YEARS приведет к ошибке).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]