Самоучитель. Курс SQL. Базы данных. ORACLE - страница 28

Шрифт
Интервал


Преобразование числа в текст делается, в основном, для его форматирования, красивого отображения, например, с пробелами–разделителями групп разрядов. Или можно всегда отображать значение с определенным количеством чисел после запятой. Для целого числа, например, после запятой будут отображаться нули. По мере развития отчетных систем, выводящих данные на печать или в отчеты, надобность форматирования чисел самой СУБД при выдаче данных, потеряла актуальность. Сами отчетные системы умеют отображать числа с любым форматированием и для них главное – само число, то есть сами данные. Тем не менее, для полноты темы, ниже мы рассмотрим использование функции to_char для преобразования числа в текст.

Выведем названия блюд столовой, их цены, а также преобразованные значения цен:



Получим:



Самое первое на что нужно обратить внимание в маске, это на разделитель целой и дробной части – D (англ. delimiter – разделитель). Далее слева и справа от разделителя мы видим цифры «0» и «9». «0» обозначает обязательное число. То есть в ценах блюд столовой до запятой должно быть минимум одно число. Даже если это будет 0. Например, цена 0 рублей 50 копеек. «9» обозначает необязательное число. В нашей маске после разделителя указаны два необязательных числа. При стоимости товара в ровно 20 рублей, после запятой нет чисел. Они бы были если товар стоил 20 рублей 55 копеек, но мы, исходя из того, какие цены у нас есть в столовой, заложили в формат, что после разделителя целой и дробной части, дальше чисел может не быть (в случае целых чисел). И поставили «9» и «9», показывая Ораклу, что нам нужны здесь два знака, но их в значении цены может не быть. Благодаря этому Оракл вывел цену в третьем столбце со знаками после запятой, даже, в случае целых чисел.

Рассмотрим еще один пример. Выведем суммы заработных плат, перечисляемых сотрудникам:



Получаем:



Спереди разделителя указано только одно обязательное число. Остальные все числа не обязательные. Через 3 цифры вставлен разделитель групп разрядов – буква «G». Это визуальный пробел для облегчения понимания размера числа.

7.3. Функция to_number

Функция to_number эквивалент функции to_char при преобразовании числа в текст, но делает обратное – преобразовывает текст в число. Пример:



Получаем:



8. Правильное обращение с NULL («пустыми» значениями)