Выбрать главу

TRIM(’0’ FROM 1OOHey Steve Button!00000’)

FROM dual;

LTRIMC HELL0GAILSEY RTRIM(’ HID0REEN0A TRIM(‘ 0 ’ FROM’ ООН

H e llo G a il Seymour! Hi Doreen Oakley! Hey Steve Button!

N V L ()

Функция NVL() используется для конвертирования пустых (n u ll) значений

в другие значения. NVL(x, значение) возвращает значение, если х содержит

n u ll, и х в остальных случаях.

В следующем примере из таблицы customers выбираются столбцы

customer_id и phone. Пустые значения в столбце phone с помощью функции

NVL() заменяются строкой Unknown Phone Number:

□ SELECT customer_id, NVL(phone, ‘Unknown Phone Number’)

FROM customers;

CUST0MER_ID NVL(PHONE,’ UNKN0WNPH’

1 800-555-1211

2 800-555-1212

Использование простых функций 101

3 800-555-1213

4 800-555-1214

5 Unknown Phone Number

N V L 2 ()

Функция NVL2(x, значение!., значение2) возвращает значение1, если х не

пусто. В противном случае возвращается значение2.

В следующем примере из таблицы customers выбираются столбцы

customer_id и phone. С помощью функции NVL2() не пустые значения столбца

phone должны быть заменены строкой Known, а пустые значения -

строкой Unknown:

□ SELECT customer_id, NVL2(phone, ‘Known’, ‘Unknown’)

FROM customers;

CUST0MER_ID NVL2(PH

1 Known

2 Known

3 Known

4 Known

5 Unknown

Для покупателей с номерами от 1 до 4 значения столбца phone конвертируются

в строку Known, так как для этих строк они не пустые (not n u ll) .

Для покупателя № 5 значение столбца phone будет преобразовано в строку

Unknown, так как для этой строки в столбце хранится пустое значение.

R E PLAC E ()

Функция REPLACE(x, строка_поиска, строка_замены) используется для поиска

в х строки, задаваемой в параметре строка_поиска, и замены ее строкой

из параметра строка_замены.

В следующем примере из таблицы products выбирается столбец name

для товара № 1 (этот столбец имеет значение Modern Science) и при помощи

функции REPLACE() строка Science заменяется строкой Physics:

□ SELECT REPLACE(name, ‘Science’, ‘Physics’)

FROM products

WHERE product_id = 1;

REPLACE(NAME,’ SCIENCE’ , ’ PHYSICS’ )

Modern P h y s ic s

Примечание Функция REPLACE() не изменяет значения строк в базе данных; изменению

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

SO U N D E X (x )

Функция S0UNDEXQ используется для получения строки, содержащей фонетическое

представление х. Это позволяет сравнивать слова, которые

записываются по-разному, но при произнесении их по-английски звучат

похоже.

102 Глава 4

В следующем примере с помощью S0UNDEX() из таблицы customers выбираются

столбцы first_name и last_name, у которых содержимое last_name

произносится как «whyte»:

□ SELECT first_name, last_name

FROM customers

WHERE SOUNDEX(last_name) = SOUNDEXCwhyte’);

FIRST_NAME LAST_NAME

Steve White

В следующем примере делается то же самое, за тем исключением, что в

функцию S0UNDEX() передается строка «Ыоо»:

□ SELECT first_name, last_name

FROM customers

WHERE SOUNDEX(last_name) = SOUNDEXC bloo’);

FIRST_NAME LAST_NAME

Doreen Blue

SU B S TR ()

Функция SUBSTR(x, начало_поиска [, длина]) используется для возврата

подстроки х, которая начинается с позиции, заданной параметром нача-

ло_поиска. Кроме того, можно задать (необязательную) длину результирующей

подстроки.

В следующем примере SUBSTR() используется для извлечения состоящей

из семи символов подстроки, начинающейся с позиции 2, из столбца name

таблицы products.

□ SELECT SUBSTR(name, 2, 7)

FROM products

WHERE product_id < 4;

SUBSTR(

odern S

hemistr

upernov

Использование выражений с функциями

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

выражения, которые сводятся к строкам. В следующем примере функция

SUBSTR() используется для выбора подстроки 'little’ из строки ‘Mary has

a little lamb’ :

□ SELECT SUBSTR(‘ Mary has a l i t t l e lamb’ , 12, 6)

FROM dual;

SUBSTR

l i t t l e

Использование простых функций 103

Комбинирование функций

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

функций. В следующем примере используется комбинация функций UPPER()

и SUBSTR(); обратите внимание, что выходные данные из SUBSTR() передаются

в UPPERQ:

□ SELECT name, UPPER(SUBSTR(name, 2, 8))

FROM products

WHERE product_id < 4;

NAME UPPER(SU

Modern Science ODERN SC

Chemistry HEMISTRY

Supernova UPERNOVA

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

на символьные функции. Будут работать любые правильные комбинации функций.

Числовые функции '

Числовые функции используются для выполнения вычислений. Эти функции

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

таблицы или любое выражение, дающее в результате число. Примером

числовой функции может служить функция SQRT(x), возвращающая