Изявления за разклоняване в командата SELECT. Изявления за разклоняване в оператор SELECT NVL трансформации за различни типове данни

Функция TO_CHAR с числа

Функции за конвертиране на данни в други типове данни. TO_CHAR(число) преобразува число в текст. TO_NUMBER(низ) преобразува текст в число.

SELECT TO_CHAR (123) FROM DUAL ще върне низа 123, SELECT TO_NUMBER (`12345") FROM DUAL ще върне числото 12345.

Лабораторна работа. Промяна на формата на изходните числа

Промени във формата на числовите стойности в Oracle SQL, функцията TO_CHAR за работа с числови стойности.

Упражнение:

Напишете заявка, която показва информация за собственото име, фамилията и заплатата на служителите от таблицата hr.employees във формата, показан на фигура 1. 3.4-1:

Ориз. 3.4 -1

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

Забележка:

Някои стойности на заплатите на фиг. 3.4-1 са променени, така че може да не отговарят на вашите стойности.

Решение:

ИЗБЕРЕТЕ first_name AS "First Name", last_name As "Last Name", TO_CHAR(SALARY, "L999999999.99") As "Salary" FROM hr.employees ORDER BY SALARY DESC.

Функции TO_NUMBER и TO_DATE

Функция за преобразуване на низ в дата TO_DATE(низ, формат). Възможните стойности на формата вече бяха обсъдени по-горе, така че ще дам няколко примера за използване на тази функция. Примери:

ИЗБЕРЕТЕ TO_DATE("01/01/2010", `ДД.ММ.ГГГГ") ОТ DUAL ще върне датата `01.01.2010";

ИЗБЕРЕТЕ TO_DATE("01.ЯНУ.2010",`ДД.МОН.ГГГГ") ОТ DUAL ще върне датата `01.01.2009";

ИЗБЕРЕТЕ TO_DATE("15-01-10",`ДД-ММ-ГГ") ОТ DUAL ще върне датата `01/15/2010'.

Функция за преобразуване на низ в числова стойност TO_NUMBER (низ, формат). Най-често срещаните стойности на формата са изброени в таблицата, така че нека разгледаме използването на тази функция, като използваме примери. Примери:

ИЗБЕРЕТЕ TO_NUMBER(`100") ОТ DUAL ще върне числото 100 SELECT TO_NUMBER(`0010.01", "9999D99") ОТ DUAL ще върне числото 10.01;

ИЗБЕРЕТЕ TO_NUMBER("500 000", "999G999") ОТ DUAL ще върне числото 500000.

RR елемент във формат на дата

Елементът за формат за дата и час RR е подобен на елемента за формат за дата и час YY, но осигурява допълнителна гъвкавост за съхраняване на стойности на дата в други векове. Елементът на RR формат за дата и час ви позволява да съхранявате дати от 20-ти век в 21-ви век, като посочите само последните две цифри на годината.

Ако последните две цифри на текущата година са от 00 до 49, тогава върнатата година има същите първи две цифри като текущата година.

Ако последните две цифри на текущата година са между 50 и 99, тогава първите 2 цифри на върнатата година са с 1 по-големи от първите 2 цифри на текущата година.

Ако последните две цифри на текущата година са от 00 до 49, тогава първите 2 цифри на върнатата година са с 1 по-малко от първите 2 цифри на текущата година.

Ако последните две цифри на текущата година са между 50 и 99, тогава върнатата година има същите първи две цифри като текущата година.

NVL функция

Функцията NVL обикновено е най-често използваната. Функцията получава два параметъра: NVL(expr1, expr2). Ако първият параметър expr1 не е NULL, тогава функцията връща неговата стойност. Ако първият параметър е NULL, тогава функцията вместо това връща стойността на втория параметър exp2.

Пример: Изберете NVL (supplier_city, n/a") от доставчици:

В горния SQL израз той ще върне n/" ако полето доставчик_град съдържа нулева стойност. В противен случай ще върне стойността доставчик_град.

Друг пример за използване на функцията NVL в Oracle/PLSQL е:

изберете доставчик_id, NVL (supplier_desc, доставчик_име) от доставчици.

Този SQL израз ще се върне Име на доставчикполе ако доставчик_дессъдържа нулева стойност. В противен случай ще се върне доставчик_дес.

Последен пример: използването на функцията NVL в Oracle/PLSQL е: изберете NVL(commission, 0) от продажби;

Този SQL оператор върна стойността 0 if комисионнаполето съдържа нулева стойност. В противен случай щеше да се върне комисионниполе.

NVL трансформации за различни типове данни

За да конвертирате недефинирана стойност в действителна стойност, използвайте функцията NVL: NVL ( израз1, израз2), Където:

израз1-Оригиналната или изчислената стойност, която може да е нулева.

израз2- Стойността, която се замества с нулевата стойност.

Забележка:Функцията NVL може да се използва за конвертиране на всеки тип данни, но резултатът винаги ще бъде от същия тип като израз1.

NVL преобразуване за различни видове:

НОМЕР-NVL (цифрова колона, 9).

CHAR или VARCHAR2 - NVL (знаци|колона,„Недостъпно“).

Лабораторна работа. Прилагане на функцията NVL

NVL функция за работа с нулеви стойности в Oracle SQL.

Упражнение:

Напишете заявка, която показва информация за имената и фамилиите на служителите от таблицата hr.employees., както и процентът на комисионната (колона COMMISSION_PCT) за служителя. В този случай за онези служители, за които комисионната не е определена, трябва да покажете стойността 0. Резултатът от заявката трябва да бъде същият, както е показано на фиг. 3.5-1.

Ориз. 3.5 -1 (показани стойности, започващи от ред 51)

Решение:

Съответният код на заявката може да изглежда така:

ИЗБЕРЕТЕ first_name КАТО „Собствено име“, last_name Като „Фамилно име“, NVL (COMMISSION_PCT, 0) Като „Комисионна ставка“ ОТ hr.employees.

NVL функция

Функцията NVL обикновено е най-често използваната. Функцията получава два параметъра: NVL(expr1, expr2). Ако първият параметър expr1 не е NULL, тогава функцията връща неговата стойност. Ако първият параметър е NULL, тогава функцията вместо това връща стойността на втория параметър expr2.

Обмисли практически пример. Полето COMM в таблицата EMP може да съдържа NULL стойности. При изпълнение на заявка като:

ИЗБЕРЕТЕ EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

ОТ SCOTT.EMP

стойността NULL ще бъде заменена с нула. Имайте предвид, че ако дадена стойност се генерира с помощта на функция, тя получава псевдоним. Резултатите от заявката ще изглеждат така:

EMPNO ENAME COMM NVL_COMM
7369 СМИТ 0
7499 АЛЪН 300 300
7521 ОТДЕЛЕНИЕ 500 500
7566 ДЖОУНС 0
7654 МАРТИН 1400 1400
7698 БЛЕЙК 0
7782 КЛАРК 0
7839 ЦАР 0
7844 ТЪРНЪР 0 0
7900 ДЖЕЙМС 0
7902 ФОРД 0
7934 МИЛЪР 0

Функция CEIL(n).

Функцията CEIL връща най-малкото цяло число, по-голямо или равно на числото n, предадено като параметър. Например:

ИЗБЕРЕТЕ CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

ОТ ДУАЛ

TRUNC(n[,m])

Функцията TRUNC връща числото n, съкратено до m знака след десетичната запетая. Параметърът m може да бъде пропуснат, в който случай n се съкращава до цяло число.

ИЗБЕРЕТЕ TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

ОТ ДУАЛ

Функция SIGN(n).

Функцията SIGN определя знака на число. Ако n е положително, тогава функцията връща 1. Ако е отрицателно, връща -1. Ако е нула, тогава се връща 0. Например:

ИЗБЕРЕТЕ SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3

ОТ ДУАЛ

Интересна характеристика на тази функция е способността да предава m равно на нула без грешка при деление на 0.

Функция POWER(n, m).

Функцията POWER повишава числото n на степен m. Степента може да бъде дробна и отрицателна, което значително разширява възможностите на тази функция.

ИЗБЕРЕТЕ МОЩНОСТ (10, 2) X1, МОЩНОСТ (100, 1/2) X2,

POWER(1000, 1/3) X3, POWER(1000, -1/3) X4

ОТ ДУАЛ

X1 X2 X3 X4
100 10 10 0,1

В някои случаи може да възникне изключение при извикване на тази функция. Например:

ИЗБЕРЕТЕ МОЩНОСТ (-100, 1/2) X2

ОТ ДУАЛ

В този случай се прави опит за изчисляване на корен квадратен от отрицателно число, което ще доведе до грешка ORA-01428 „Аргумент извън диапазона“.

Функция SQRT(n)

Тази функциявръща корен квадратен от n. Например:

ИЗБЕРЕТЕ SQRT(100) X

ОТ ДУАЛ

Функции EXP(n) и LN(n).

Функцията EXP повдига e на степен n, а функцията LN изчислява натурален логаритъм на n (като n трябва да е по-голямо от нула). Пример:

ИЗБЕРЕТЕ EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

NVL функция

Функцията NVL обикновено е най-често използваната. Функцията получава два параметъра: NVL(expr1, expr2). Ако първият параметър expr1 не е NULL, тогава функцията връща неговата стойност. Ако първият параметър е NULL, тогава функцията вместо това връща стойността на втория параметър expr2.

Нека разгледаме един практически пример. Полето COMM в таблицата EMP може да съдържа NULL стойности. При изпълнение на заявка като:

ИЗБЕРЕТЕ EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

ОТ SCOTT.EMP

стойността NULL ще бъде заменена с нула. Имайте предвид, че ако дадена стойност се генерира с помощта на функция, тя получава псевдоним. Резултатите от заявката ще изглеждат така:

EMPNO ENAME COMM NVL_COMM
7369 СМИТ 0
7499 АЛЪН 300 300
7521 ОТДЕЛЕНИЕ 500 500
7566 ДЖОУНС 0
7654 МАРТИН 1400 1400
7698 БЛЕЙК 0
7782 КЛАРК 0
7839 ЦАР 0
7844 ТЪРНЪР 0 0
7900 ДЖЕЙМС 0
7902 ФОРД 0
7934 МИЛЪР 0

Функция CEIL(n).

Функцията CEIL връща най-малкото цяло число, по-голямо или равно на числото n, предадено като параметър. Например:

ИЗБЕРЕТЕ CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

ОТ ДУАЛ

TRUNC(n[,m])

Функцията TRUNC връща числото n, съкратено до m знака след десетичната запетая. Параметърът m може да бъде пропуснат, в който случай n се съкращава до цяло число.

ИЗБЕРЕТЕ TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

ОТ ДУАЛ

Функция SIGN(n).

Функцията SIGN определя знака на число. Ако n е положително, тогава функцията връща 1. Ако е отрицателно, връща -1. Ако е нула, тогава се връща 0. Например:

ИЗБЕРЕТЕ SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3

ОТ ДУАЛ

Интересна характеристика на тази функция е способността да предава m равно на нула без грешка при деление на 0.

Функция POWER(n, m).

Функцията POWER повишава числото n на степен m. Степента може да бъде дробна и отрицателна, което значително разширява възможностите на тази функция.

ИЗБЕРЕТЕ МОЩНОСТ (10, 2) X1, МОЩНОСТ (100, 1/2) X2,

POWER(1000, 1/3) X3, POWER(1000, -1/3) X4

ОТ ДУАЛ

X1 X2 X3 X4
100 10 10 0,1

В някои случаи може да възникне изключение при извикване на тази функция. Например:

ИЗБЕРЕТЕ МОЩНОСТ (-100, 1/2) X2

ОТ ДУАЛ

В този случай се прави опит за изчисляване на корен квадратен от отрицателно число, което ще доведе до грешка ORA-01428 „Аргумент извън диапазона“.

Функция SQRT(n)

Тази функция връща корен квадратен от n. Например:

ИЗБЕРЕТЕ SQRT(100) X

ОТ ДУАЛ

Функции EXP(n) и LN(n).

Функцията EXP повдига e на степен n, а функцията LN изчислява натурален логаритъм на n (като n трябва да е по-голямо от нула). Пример:

ИЗБЕРЕТЕ EXP(2) X1, LN(1) X2, LN(EXP(2)) X3