русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

II.3.4. Функции DECODE, CASE, DUMP, ORA_HASH, VSIZE


Дата добавления: 2015-07-09; просмотров: 1072; Нарушение авторских прав


Q3_19 Формирование отчета, в котором содержимое столбца разворачивается в ряд столбцов отчета. Отчет должен содержать по строкам список сорудников (номера и имена служащих), по столбцам наименования отделов, а на пересечении знак ‘+’, если служащий работает в соответствующем отделе (только для отделов 10,20,30).

demo@10g> select employee_id, last_name,

(select decode(department_id,10,' + ',NULL) from department

where employee.department_id=department.department_id) acc_new_york,

(select decode(department_id,20,' + ',NULL) from department

where employee.department_id=department.department_id) res_dallas,

(select decode(department_id,30,' + ',NULL) from department

where employee.department_id=department.department_id) sal_chicago

from employee

where department_id in(10,20,30);

 

 

В этом запросе создается пять столбцов, три последних из которых создаются с помощью функции decode.

Функция decode в данном запросе обрабатывает значения столбца department_id (первым параметром функции decode является название столбца, для которого эта функция используется).. Если в этом столбце извлекаемой строки для части запроса с алиас «acc_new_york» содержится значение «10» (второй параметр функции decode в данной части запроса имеет значение «10»), функция decode вернет символ «+» (третий параметр функции decode имеет значение «+»), в противном случае – NULL (последний параметр функции decode имеет значение «NULL»). Если в этом столбце извлекаемой строки содержится значение «20» (для извлекаемой части запроса с алиас «res_dallas»), функция decode вернет символ «+», в противном случае – NULL. Если, наконец, в этом столбце извлекаемой строки содержится значение «30» (для извлекаемой части запроса с алиас «sal_chicago»), функция decode вернет символ «+», в противном случае – NULL.



 

Q3_20 А теперь усложним вывод отчета. На пересечении строк (сотрудников) и столбцов(названий отдела) надо выставить зарплату сотрудника в этом отделе (только для отделов 10,20,30).

demo@10g> select employee_id, last_name,

(select decode(department_id,10,salary,NULL) from department

where employee.department_id=department.department_id) acc_new_york,

(select decode(department_id,20,salary,NULL) from department

where employee.department_id=department.department_id) res_dallas,

(select decode(department_id,30,salary,NULL) from department

where employee.department_id=department.department_id) sal_chicago

from employee

where department_id in(10,20,30);

 

 

Q3_21 Повторим запросы Q3_19 и Q3_20 в другом варианте с использованием CASE выражения:

 

demo@10g> SELECT employee_id, last_name,

(CASE WHEN department_id=10 THEN ' + ' ELSE NULL END) acc_new_york,

(CASE WHEN department_id=20 THEN ' + ' ELSE NULL END) res_dallas,

(CASE WHEN department_id=30 THEN ' + ' ELSE NULL END) sal_chicago

from employee

where department_id in(10,20,30);

 

 

demo@10g> SELECT employee_id, last_name,

(CASE WHEN department_id=10 THEN salary ELSE NULL END) acc_new_york,

(CASE WHEN department_id=20 THEN salary ELSE NULL END) res_dallas,

(CASE WHEN department_id=30 THEN salary ELSE NULL END) sal_chicago

from employee

where department_id in(10,20,30);

 

Q3_22 С помощью функции DUMP определим код типа данных, длину записанной в ячейке столбца информации, набор символов (CharacterSet), коды последовательности символов (указанной длины), начиная с указанной стартовой позиции.

 

demo@10g> select dump(last_name,8) from employee

where department_id=10;

 

Если вместо «8» поставим «10» или «16» получим коды символов в соответствующей системе (десятичной или шестнадцатиричной).

 

 

demo@10g> select dump(last_name,10,2,2) from employee

where department_id=10;

 

 

demo@10g> select dump(last_name,1016) from employee

where department_id=10;

 

Добавление 1000 к цифре кодировки (16 в последнем запросе) позволяет вывести набор

Символов (CharacterSet).

 

Прежде чем вывести DUMP для столбца числового типа, отформатируем вывод:

 

demo@10g> select salary,dump(salary,1016) from employee

where department_id=10;

 

Q3_23 Функция VSIZE выводит число байт во внутреннем представлении Oracle

SELECT last_name, VSIZE (last_name) "BYTES"

FROM employee

WHERE department_id = 10;

 

 

Q3_24 Функция ORA_HASH вычисляет хэш значение для значений столбца. В нижеприводимом варианте хэш значение разыгрывается в диапазоне чисел 0 – 4294967295.

demo@10g> select ORA_HASH(salary) from employee

where department_id=10;

 

ORA_HASH(SALARY)

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

 

Можно изменить диапазон (установим, например, 100) и задать начальное значение последовательности случайных чисел (установим, например, 5), которая используется при формировании хэш значения

 

demo@10g> select ORA_HASH(salary,100,5) from employee

where department_id=10;

 

ORA_HASH(SALARY,100,5)

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

 



<== предыдущая лекция | следующая лекция ==>
II.3.3. Некоторые функции преобразования | II.3.5. Агрегатные и аналитические функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.202 сек.