Введение в Oracle 10g. Часть 4
Введение
В предыдущей статье мы рассмотрели псевдонимы и псевдостолбцы, а также правила их использования в запросах. В настоящей статье мы продолжим рассмотрение Oracle SQL речь пойдет о базовых встроенных функциях, которые могут применяться в запросах.
Функция NVL
Функция NVL, как правило, применяется чаще всего. Функция получает два параметра: NVL(expr1, expr2). Если первый параметр expr1 не равен NULL, то функция возвращает его значение. Если первый параметр NULL, то вместо него функция возвращает значение второго параметра expr2.
Рассмотрим практический пример. Поле COMM в таблице EMP может содержать значения NULL. При выполнении запроса вида:
SELECT EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM
FROM SCOTT.EMP
значение NULL будет заменено на ноль. Обратите внимание на то, что в случае формирования значения при помощи функции ему назначается псевдоним. Результаты запроса будут иметь вид:
EMPNO | ENAME | COMM | NVL_COMM |
7369 | SMITH | 0 | |
7499 | ALLEN | 300 | 300 |
7521 | WARD | 500 | 500 |
7566 | JONES | 0 | |
7654 | MARTIN | 1400 | 1400 |
7698 | BLAKE | 0 | |
7782 | CLARK | 0 | |
7839 | KING | 0 | |
7844 | TURNER | 0 | 0 |
7900 | JAMES | 0 | |
7902 | FORD | 0 | |
7934 | MILLER | 0 |
Числовые функции
В Oracle предусмотрен ряд встроенных функций для работы с числами. Их не очень много, поэтому рассмотрим их все.
Функция ABS(n)
Функция ABS возвращает абсолютное значение числа. Например:
SELECT ABS(100) X1, ABS(-100) X2, ABS(-100.2) X3
FROM DUAL
X1 | X2 | X3 |
100 | 100 | 100,2 |
Функция CEIL(n)
Функция CEIL возвращает наименьшее целое, большее или равное переданному в качестве параметра числу n. Например:
SELECT CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4
FROM DUAL
X1 | X2 | X3 | X4 |
100 | -100 | 101 | 100 |
Функция FLOOR(n)
Функция FLOOR возвращает наибольшее целое, меньшее или равное переданному в качестве параметра числу n. Например:
SELECT FLOOR(100.22) X1, FLOOR(-100.22) X2,
FLOOR(100.99) X3, FLOOR(100.01) X4
FROM DUAL
X1 | X2 | X3 | X4 |
100 | -101 | 100 | 100 |
Функция TRUNC(n [,m])
Функция TRUNC возвращает число n, усеченное до m знаков после десятичной точки. Параметр m может не указываться – в этом случае n усекается до целого.
SELECT TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,
TRUNC(100.25678, 2) X4
FROM DUAL
X1 | X2 | X3 | X4 |
100 | -100 | 100 | 100,25 |
Функция ROUND(n [,m])
Функция ROUND возвращает число n, округленное до m знаков после десятичной точки по правилам математического округления. Параметр m может не указываться в этом случае n округляется до целого.
SELECT ROUND(100.25678) X1, ROUND(100.5) X2, ROUND(100.99) X3, ROUND(100.25678, 2) X4
FROM DUAL
X1 | X2 | X3 | X4 |
100 | 101 | 101 | 100,26 |
Функция SIGN(n)
Функция SIGN определяет знак числа. Если n положительное, то функция возвращает 1. Если отрицательное возвращается -1. Если равно нулю, то возвращается 0. Например:
SELECT SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3
FROM DUAL
X1 | X2 | X3 |
1 | -1 | 0 |
Функция MOD(n, m)
Функция MOD возвращает от деления n на m. Например:
SELECT MOD(10, 3) X1, MOD(10, 2) X2, MOD(100, 0) X3
FROM DUAL
X1 | X2 | X3 |
1 | 0 | 100 |
Интересной особенностью данной функции является возможность передачи m равного нулю при этом не возникает ошибки деления на 0.
Функция POWER(n, m)
Функция POWER возводит число n в степень m. Степень может быть дробной и отрицательной, что существенно расширяет возможности данной функции.
SELECT POWER(10, 2) X1, POWER(100, 1/2) X2,
POWER(1000, 1/3) X3, POWER(1000, -1/3) X4
FROM DUAL
X1 | X2 | X3 | X4 |
100 | 10 | 10 | 0,1 |
В некоторых случаях при вызове данной функции может возникнуть исключительная ситуация. Например:
SELECT POWER(-100, 1/2) X2
FROM DUAL
В данном случае производится попытка вычисления квадратного корня от отрицательного числа, что приведет к возникновению ошибки ORA-01428 «Аргумент вне диапазона».
Функция SQRT(n)
Данная функция возвращает квадратный корень от числа n. Например:
SELECT SQRT(100) X
FROM DUAL
Функции EXP(n) и LN(n)
Функция EXP возводит e в степень n, а функция LN вычисляет натуральный логарифм от n (при этом n должно быть больше нуля). Пример:
SELECT EXP(2) X1, LN(1) X2, LN(EXP(2)) X3
FROM DUAL
X1 | X2 | X3 |
2,71828182845905 | 0 | 2 |
Попытка передать функции LN отрицательное значение приводит к возникновению ошибки ORA-1428.
Функция LOG(n, m)
Функция LOG производит вычисление логарифма m по основанию n. Пример:
SELECT LOG(2, 8) X1, LOG(10, 100) X2
FROM DUAL
X1 | X2 |
3 | 2 |
Тригонометрические функции
Oracle поддерживает вычисление основных тригонометрических функций:
SIN(n) синус n (где n угол в радианах)
COS(n) косинус n (где n угол в радианах)
TAN(n) тангенс n (где n угол в радианах)
SINH(n) гиперболический синус n
COSH(n) гиперболический косинус n
TANH(n) гиперболический тангенс n
Пример:
SELECT SIN(0) X1, COS(0) X2, TAN(0) X3
FROM DUAL
X1 | X2 | X3 |
0 | 1 | 0 |
Заключение
Итак, мы рассмотрели все основные встроенные функции Oracle, предназначенные для работы с числовой информацией. В следующей статье мы будем изучать функции для работы со строками и датами.