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

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

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

Функция

Описание

ASCII(char)

Возвращает ASCII-код первого символа строки char в наборе символов базы данных.

CHR(n)

Возвращает символ, имеющий двоичный код n в наборе символов базы данных.

CONCAT(char1, char2)

Возвращает строку char1, сцепленную со строкой char2. Эта функция эквивалентна оператору конкатенации (||).

INITCAP(char)

Возвращает строку char, каждое слово которой начинается с прописной буквы, а остальные буквы строчные.

INSTR(char1, char2[, n[,m]])

Просматривает строку char1, начиная с ее n-го символа, отыскивает m-е вхождение подстроки char2, и возвращает позицию первого символа в этом вхождении относительно начала строки char1. Если n отрицательно, то Oracle отсчитывает и просматривает в обратном направлении, начиная с конца строки char1. Значение m должно быть положительным. По умолчанию оба значения m и n равны 1, т.е. Oracle отыскивает первое вхождение подстроки char2, начиная поиск с первого символа char1. Возвращаемое значение всегда вычислено относительно начала строки char1, независимо от значения n, и выражено в символах. Если поиск безуспешен (т.е. если подстрока char2 не встречается m раз после n-го символа строки char1), то возвращается 0.

LENGTH(char)

Возвращает длину строки char в символах. Если char имеет тип данных CHAR, то эта длина включает все хвостовые пробелы. Если строка char пуста, то возвращается NULL.

LOWER(char)/ UPPER(char)

Возвращает строку char, все буквы которой строчные/прописные.

LPAD(char1, n[, char2])/ RPAD(char1, n[, char2])

Возвращает строку char, дополненную слева/справа до n символов цепочками символов char2. Если char2 опущено, подразумевается пробел. Если char1 длиннее, чем n, то возвращаются первые n символов строки char1.

SUBSTR(char, m[, n])

Возвращает часть строки char, начиная с символа с номером m и длиной n символов. Если m положительно, Oracle отсчитывает символы от начала строки char, если m отрицательно - от конца строки char. Значение m не может быть нулевым. Если n опущено, возвращаемая часть строки продолжается до конца char. Значение n не может быть меньше 1.

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

Пример использования LOWER, UPPER, INITCAP:

SELECT UPPER(last_name), LOWER(first_name), INITCAP(title)

FROM s_emp;

Результат:

UPPER(LAST_NAME) LOWER(FIRST_NAME) INITCAP(TITLE)

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

VELASQUEZ carmen President

NGAO ladoris Vp, Operations

NAGAYAMA midori Vp, Sales

QUICK-TO-SEE mark Vp, Finance

ROPEBURN audry Vp, Administration

URGUHART molly Warehouse Manager

25 rows selected.

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

SELECT CONCAT(CONCAT(first_name,’ ‘), last_name) employee

FROM s_emp;

Результат:

EMPLOYEE

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

Carmen Velasquez

LaDoris Ngao

Midori Nagayama

Mark Quick-To-See

Audry Ropeburn

Molly Urguhart

Roberta Menchu

Ben Biri

25 rows selected.

Пример использования LENGTH: Вывести названия отделов, в которых больше 10 символов:

SELECT name

FROM s_dept

WHERE LENGTH(name)>10;

Результат:

NAME

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

Administration

Пример использования LPAD, RPAD:

SELECT LPAD('table', 15, '!?'), RPAD('table', 15, '!?'),

LPAD('table', 3, '!?'), RPAD('table', 3, '!?')

FROM dual;

Результат:

LPAD('TABLE',15 RPAD('TABLE',15 LPA RPA

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

!?!?!?!?!?table table!?!?!?!?!? tab tab

Пример использования INSTR:

SELECT INSTR('CORPORATE FLOOR', 'OR', 3, 2) "Instring",

INSTR('CORPORATE FLOOR', 'OR', -3, 2) "Reversed Instring"

FROM dual;

Результат:

Instring Reversed Instring

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

14 2

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

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

С датами можно производить такие арифметические операции, как сложение и вычитание. При этом прибавлять и вычитать можно не только даты, но и числовые константы:

Операция

Результат

Описание

дата + число

Дата

Прибавление количества дней к дате.

дата - число

Дата

Вычитание количества дней из даты.

дата - дата

Число

Вычитание одной даты из другой, результат – количество дней между датами.

дата + число/24

Дата

Прибавление часов к дате.

Функции для работы с датами оперируют на значениях типа DATE. Все функции дат возвращают значения типа DATE, кроме функции MONTHS_BETWEEN, которая возвращает целое значение. В следующей таблице приведены некоторые из функций для работы с датами:

Функция

Описание

ADD_MONTHS(дата, n)

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

LAST_DAY(дата)

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

MONTHS_BETWEEN (дата1, дата2)

Возвращает количество месяцев между датой1 и датой2. Если дата1 - более поздняя дата, чем дата2, то результат положителен; в противном случае – отрицателен. Если дата1 и дата2 попадают на одинаковые дни своих месяцев или на последние дни своих месяцев, то результат будет целым числом; в противном случае Oracle вычисляет дробную часть результата.

NEXT_DAY(дата, символ)

Возвращает дату первого дня недели, имеющего имя символ и следующего за заданной датой. Аргумент символ может задавать порядковый номер или название дня недели.

ROUND(дата[, fmt])

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

SYSDATE

Возвращает текущие дату и время, не требует аргументов.

TRUNC(дата[, fmt])

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

Описание моделей формата дат будет приведено далее в этой же лекции.

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