Функции преобразования типов

Введение в Oracle SQL

Hadrien Lacroix

Content Developer

Типы данных

Тип данных определяет, какие данные может содержать столбец.

Числовые данные Символьные данные Данные дат
AVG x
SUM x
MIN x x x
COUNT x x x

Функции преобразования конвертируют столбец из одного типа данных в другой

Введение в Oracle SQL

Функции преобразования

  • Преобразование типов данных
    • Неявное преобразование типов
    • Явное преобразование типов
Введение в Oracle SQL

Неявное преобразование типов

SQL автоматически преобразует типы данных

SELECT 'Track length: ' || Milliseconds
FROM Track
| 'Track length: ' || Milliseconds     |
|--------------------------------------|
| Track length: 343719                 |
| Track length: 342562                 |
| ...                                  |
Введение в Oracle SQL

Явное преобразование типов

Сводная диаграмма функций преобразования и типов данных

Введение в Oracle SQL

Преобразование в символьные данные

Преобразование числа в символьный формат с помощью функции TO_CHAR:

SELECT UnitPrice, TO_CHAR(UnitPrice, '$999.99') 
FROM InvoiceLine
| UnitPrice   | TO_CHAR(UnitPrice, '$9.99') |
|-------------|-----------------------------|
| 0.99        | $0.99                       |
| 1.99        | $1.99                       |
| ...         | ...                         |
  • $ : Плавающий знак доллара
  • . : Позиция десятичного разделителя
  • 9 : Обозначает числовую позицию. Количество девяток определяет ширину отображения
  • 0 : Задаёт ведущие нули
  • , : Позиция разделителя тысяч
Введение в Oracle SQL

Преобразование в символьные данные

Преобразование даты в символьный формат с помощью функции TO_CHAR:

SELECT TO_CHAR(BirthDate, 'DD-MON-YYYY') 
FROM Employee
| TO_CHAR(BirthDate, 'DD-MON-YYYY') |
|-----------------------------------|
| 19-SEP-1947                       |
| ...                               |
  • YYYY: Четырёхзначное представление года
  • YEAR: Год прописью
  • MM: Двузначный номер месяца
  • MONTH: Полное название месяца
  • MON: Трёхбуквенное сокращение месяца
  • DY: Трёхбуквенное сокращение дня недели
  • DAY: Полное название дня
  • DD: Числовой день месяца
Введение в Oracle SQL

Преобразование в числовые данные

Преобразование символьной строки в числовой формат с помощью функции TO_NUMBER:

SELECT TO_NUMBER('$15,000.75', '$999,999.99')
FROM DUAL
| TO_NUMBER('$15,000.75', '$999,999.99') |
|----------------------------------------|
| 15000.75                               |
  • $ : Плавающий знак доллара
  • . : Позиция десятичного разделителя
  • 9 : Обозначает числовую позицию. Количество девяток определяет ширину отображения
  • 0 : Задаёт ведущие нули
  • , : Позиция разделителя тысяч
Введение в Oracle SQL

Преобразование в данные типа «дата»

Преобразование символьной строки в формат даты с помощью функции TO_DATE:

SELECT TO_DATE('2016-01-31','YYYY-MM-DD')
FROM DUAL
| TO_DATE('2016-01-31','YYYY-MM-DD')     |
|----------------------------------------|
| 31-JAN-16                              |
  • YYYY: Четырёхзначное представление года
  • YEAR: Год прописью
  • MM: Двузначный номер месяца
  • MONTH: Полное название месяца
  • MON: Трёхбуквенное сокращение месяца
  • DY: Трёхбуквенное сокращение дня недели
  • DAY: Полное название дня
  • DD: Числовой день месяца
Введение в Oracle SQL

Какой тип преобразования выбрать?

Знак предупреждения

 

  • Всегда используйте явное преобразование
    • Код легче читать и поддерживать
    • Код будет работать корректно
Введение в Oracle SQL

Давайте потренируемся!

Введение в Oracle SQL

Preparing Video For Download...