Базы данных

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

SELECT TRANSLATE('123 455,23', '., ', '..') xl, TRANSLATE О-123 455.23', '., ', '..') х2 FROM dual

XI                                    Х2

123455.23                         -123455.23

Функция SUBSTR(str, m [,n])

Функция SUBSTR возвращает фрагмент строки str, начиная с символа m длиной п символов. Длину можно не указывать — в этом случае возвращается строка от символа m и до конца строки str. Нумерация символов идет с 1. Если указать m = 0, то копирование все равно начнется с первого символа. Задание отрицательного значения m приводит к тому, что символы отсчитываются от конца строки, а не от начала. Задание значений т, превышающих по абсолютному значению длину строки, приводит к тому, что функция возвращает NULL.

Пример:

SELECT SUBSTRCY попа была собака',   13) xl, SUBSTRCY попа была собака',   -6) х2, SUBSTR('3to тестовый текст',   5, 8) хЗ, SUBSTRCy попа была собака',   150) х4 FROM dual

XI

Х2

ХЗ

Х4

собака

собака

текстовый

NULL

Функция INSTR(str, search_str [,n[,m]])

Функция INSTR возвращает позицию первого символа т-го фрагмента строки str, совпадающего со строкой search_str. Сравнение ведется с п-го символа строки str, при сравнении учитывается регистр. По умолчанию п = m = 1, то есть поиск ведется от начала строки и возвращается позиция первого найденного фрагмента. В случае неуспешного поиска функция возвращает 0.

Примеры:

SELECT INSTR('y попа была собака', 'собака') xl,

INSTR('y попа была собака', 'кошка') х2,

INSTR('Это текст для демонстрации поиска текста',

'текст', 1, 2) хЗ,

INSTRC11111000000001', '1', 7) х4

FROM dual

XI

Х2

ХЗ

Х4

13

0

35

14

С данной функций, равно как и со всеми остальными в Oracle, часто допускаются типовые ошибки, связанные с обработкой значения NULL. Если str=NULL, то функция вернет NULL, а не ноль! Это необходимо учитывать при построении различных условий. Например, данный фрагмент программы на PL/SQL как раз не учитывает эту особенность:

предыдущаяследующая