3) INITCAP(string) – преобразует первый символ каждого слова в верхний регистр;
4) INSTR(input_string,sub_string[,n[,m]]) – находит –е вхождение искомой строки, находящееся во входной строке , начиная с позиции n. Если строка не найдена, то функция возвращает 0, в противном случае возвращает позицию первого символа искомой строки во входной;
5) LENGTH(string) – длина строки;
6) LOWER(string)
UPPER(string)
Приводит строку к нижнему и верхнему регистру соответственно.
6) LPAD(string, n[, pad_chars])
RPAD(string, n[, pad_chars])
Если не указан параметр pad_chars – дополняет входную строку string пробелами до длины n слева и справа соответственно. В противном случае для дополнения строки до длины n используются символы заполнения pad_chars. Если строка string длиннее n символов, она обрезается слева и справа до длины n.
7) LTRIM (string[, set_of_chars])
RTRIM (string[, set_of_chars])
Убирает начальные и завершающие символы, входящие в набор set_of_chars. Если этот набор символов не указан, то удаляются пробелы.
8) SUBSTR(string,start[,length]) – выделяет подстроку длиной length из входной строки string, начиная с позиции start.
9) TRANSLATE(string,search_set,replace_set) – заменяет в строке string каждый символ из набора search_set на соответствующий символ из набора символов replace_set.
SELECT TRANSLATE(to_char(sysdate,’dd month year’), ‘0123456789abcd…xyz’,’@@@@...@##...##’) Result from dual;
4.6. Универсальные функции
1) NVL(expression,replace_value) – возвращает значение выражения, если оно не является пустым. Если же оно NULL, то результатом будет значение replace_value.
Это одна из наиболее важных функций, используемых в SQL запросах. Она позволяет преобразовывать значения данных и динамически направлять выполнение запроса.
Ее можно использовать для преобразования входного значения в более информативный вид:
Как видно, аналитик не подвергся обработке и попал в результирующие данные в том виде, в каком был извлечен из таблицы ЕМР.
Еще одно применение функции DECODE - определение диапазонов значений. Для этого необходимо также использовать функцию SIGN (для сравнения чисел). Предположим, что в организации надбавка к зарплате зависит от стажа работы (см. табл. 5.6).
Таблица 5.6 Зависимость надбавки к зарплате от стажа работы
Стаж работы (в месяцах)
Надбавка (в процентах)
< 12
12 - 60
60 - 180
> 180
В таком случае надбавка может быть получена следующим запросом:
Часто функцию DECODE применяют в предложении ORDER BY, если простая сортировка по столбцу не может обеспечил требуемого упорядочивания данных. Например, нужно выбрав всех сотрудников из таблицы ЕМР и отсортировать данные по должностям в следующем порядке:
PRESIDENT, MANAGER. CLERK, ANALYST, SALESMAN.
Выполнить эту задачу может следующий запрос:
SELECT EMPNO, ENAME, JOB FROM emp
ORDER BY DECODE(job, 'PRESIDENT, 1, 'MANAGER’, 2, 'CLERK', 3, 'ANALYST’, 4, 'SALESMAN', 5, 99), ename;