Контрольные вопросы и задания для самостоятельного выполнения
1. Повторить запросы из этого шага.
2. Вывести все города, где количество проживающих людей больше, чем количество людей в городах с CITYCODE 5, 6, 7.
3. Вывести на экран с помощью SELECT всех людей из таблицы MAN, чей возраст меньше каждого человека, у которого автомобиль BMW.
Шаг 42. Преобразование типов данных
Очень часто требуется при решении различных задач преобразовать данные от одного к другому типу, например преобразовать число к строке.
В SQL ORACLE диалекта существует несколько функций для преобразования типов данных.
Есть универсальная функция для преобразования различных типов данных к текстовому формату.
Универсальная функция TO_CHAR.
Рассмотрим несколько примеров работы функции TO_CHAR.
Синтаксис
Преобразование даты в текстовый формат
YYYY — полный формат года;
YY — краткий формат года;
MM — месяц;
DY — день недели;
hh24 — часы, также возможны варианты с AM и PM, подробнее в документации;
mi — минуты;
ss — секунды.
Примеры работы функции TO_CHAR для преобразования дат в строку
Показать текущий день недели.
Показать текущую дату как в примере 22-10-2018 23:11:11, преобразовав к строке.
Показать текущую дату как в примере 22.10.18 23:11:11, преобразовав к строке.
Показать текущую дату как в примере 2018.10.22 23:11:11, преобразовав к строке.
Преобразование числовых значений в текстовый формат
0 — число c лидирующим 0;
99 — число.
Примеры
Преобразовать в строку 12.033.
Преобразовать в строку 0.033 как.033.
Преобразовать в строку 123.0334.
Конструкция CAST
Весьма полезной может быть функция преобразования типов — CAST.
Она имеет следующий синтаксис:
Примеры
Привести число 1000 к типу VARCHAR2 (10).
Привести строку «1000.01» к типу NUMBER.
Следует понимать, что описанные функции преобразования данных весьма специальные и могут применяться лишь в ORACLE SQL диалекте, а для других систем, таких как MYSQL, MS SQL, PostgreSQL, следует ознакомиться с соответствующим разделом документации по функциям преобразования типов.
При использовании CAST необходимо, чтобы типы данных совпадали — то есть если мы выполняем преобразование к типу NUMBER, то значение должно переводиться в номер, в значении не должно быть лишних символов, не являющихся числами.
Можно ли, наоборот, преобразовать строку в DATE?
Да, и для этого есть функция TO_DATE (строка, формат).
Пример использования TO_DATE:
Можно ли при преобразовании больших чисел в строку показать разделители разрядов числа?
Такая возможность есть, вот пример:
— 1 234 325 234 234,55.
Или:
— 1 234 325 234 234,55.
Здесь D — разделитель дробного числа, а G — разделитель разрядов.
Контрольные вопросы и задания для самостоятельного выполнения
1. Объяснить отличия функции TO_CHAR от функции CAST.
2. Показать текущий день недели.
3. Показать вчерашнюю дату как в примере 22:10:2018 23-11-11.
4. Показать вчерашнюю дату как в примере 22-10-18 23-11-11.
5. Показать вчерашнюю дату как в примере 2018-10-22 23:11:11.
6. Привести строку «20.01» к типу NUMBER.
Шаг 43. Объединение таблицы с самой же собой
Пожалуй, самый парадоксальный и необычный способ объединения таблиц JOIN заключается в том, что язык SQL допускает объединение таблицы с самой же собой, в этом случае для каждой таблицы создается свой псевдоним и обращение происходит по уникальному псевдониму.
Синтаксис
Альтернативный синтаксис
Здесь таблица t11—t12 — это псевдонимы для одной и той же таблицы — таблица1.
Примеры
Выбрать из таблицы CITY названия городов и популяцию, а также названия городов и популяцию, где код города = код текущего города +1.
Рисунок 128. Запрос к CITY: таблица с самой же собой
Выбрать из таблицы MAN имя, фамилию человека, возраст, а также имя, возраст и фамилию человека, который старше данного человека на два года.
Рисунок 129. Запрос к MAN: таблица с самой же собой
Выбрать из таблицы MAN имя, фамилию человека, возраст, а также имя и фамилию, возраст человека, который старше и живет в том же городе.
Рисунок 130. Запрос к MAN: таблица с самой же собой
Читать дальше
Конец ознакомительного отрывка
Купить книгу