Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec4.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
249.86 Кб
Скачать

Вложенные однострочные функции

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

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

SELECT

UPPER(CONCAT(CONCAT(SUBSTR(first_name,1,1),’.’), last_name)) employees

FROM s_emp;

Результат:

EMPLOYEES

------------------

C.VELASQUEZ

L.NGAO

M.NAGAYAMA

M.QUICK-TO-SEE

A.ROPEBURN

M.URGUHART

R.MENCHU

B.BIRI

A.CATCHPOLE

M.HAVEL

C.MAGEE

H.GILJUM

25 rows selected.

Прочие однострочные функции

DECODE

Синтаксис:

DECODE (выражение, значение1, результат1[, значение2, результат2, …] [значение_по_умолчанию])

Чтобы вычислить значение этой функции, Oracle сравнивает выражение с каждым значением. Если выражение совпадает с некоторым значением, Oracle возвращает соответствующий результат. Если ни одного совпадения не найдено, Oracle возвращает значение_по_умолчанию, или NULL, если значение_по_умолчанию опущено. Максимальное количество аргументов DECODE, включая выражение, значение_по_умолчанию и все значения и результаты, равно 255.

Пример: Вывести текущий размер суммарной зарплаты всех служащих, а также размер суммарной зарплаты в случае, если всем торговым представителям (Sales Representative) повысить зарплату до 2000, а всем клеркам (Stock Clerk) – до 1500. В решении используется групповая функция SUM, описанная в Лекции 8. В первом выходном столбце суммируются текущие зарплаты служащих, во втором столбце суммирование производится в зависимости от значения столбца title. Если значение title – ‘Sales Representative’ прибавляется 2000, если – ‘Stock Clerk’, прибавляется 1500, в противном случае – прибавляется текущее значение зарплаты salary.

SELECT SUM(salary) old,

SUM(DECODE(title, 'Sales Representative', 2000,

'Stock Clerk', 1500, salary)) new

FROM s_emp;

Результат:

OLD NEW

--------- ---------

31377 39507

GREATEST

Синтаксис:

GREATEST(выражение[, выражение] ...)

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

Пример:

SELECT GREATEST('Harry', 'Harriot', 'Harold')

FROM dual;

Результат:

GREAT

-----

Harry

LEAST

Синтаксис:

LEAST(выражение[, выражение] ...)

Возвращает наименьшее значение из списка выражений.

Пример:

SELECT LEAST('Harry', 'Harriot', 'Harold')

FROM dual;

Результат:

LEAST(

------

Harold

NVL

Синтаксис:

NVL (выражение1, выражение2)

Если выражение1 равно NULL, функция возвращает выражение2, в противном случае – выражение1.

Пример: Для каждой фирмы-клиента вывести ее номер и комментарии. В случае, если комментарии отсутствуют вывести фразу ‘no comments’.

SELECT id, NVL(comments, 'no comments') comments

FROM s_customer;

Результат:

ID COMMENTS

---- -------------------------------------------------------

201 Customer usually orders large amounts and has a high or

der total. This is okay as long as the credit rating r

emains excellent.

202 Customer should always pay by cash until his credit rat

ing improves.

203 Customer specializes in baseball equipment and is the l

argest retailer in India.

204 no comments

205 no comments

15 rows selected.

14

Л екция 4. Язык SQL. Однострочные функции.

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