Отформатируйте число в два знака после запятой — Oracle

#sql #oracle

Вопрос:

Формат 21000 в 210.00 или 21123 в 211.23

Я попытался выбрать to_char(21000,’999,99′) из dual; но в результате я получаю#####.

Я также попытался выбрать to_char(21000,’99999.99′) из dual; но он форматирует число до 21000.00

Комментарии:

1. Вы на самом деле имели в виду «отформатировать 21000 в десятичное число 210, представленное в виде строки 210.00» (с двумя десятичными знаками)? Это не просто проблема «форматирования» — на самом деле вы делите на 100. В разделе «форматирование» вы не изменяете значение, только то, как оно показано. Или вы имели в виду «показать число 21000 как 210,00, где точка является разделителем групп — число по-прежнему является целым числом двадцать одна тысяча»? В таком случае, почему вы имеете в виду «десятичные знаки»? В любом случае вам следует уточнить. Один респондент до сих пор предполагал один из двух ответов, но я не уверен на 100%, что вы это имели в виду.

Ответ №1:

Вам нужно разделить на 100:

 SELECT value,
       TO_CHAR(value / 100, 'FM990.00') AS formatted_value
FROM   table_name;
 

Который, для выборочных данных:

 CREATE TABLE table_name ( value ) AS
SELECT 21000 FROM DUAL UNION ALL
SELECT 21123 FROM DUAL;
 

Выходы:

ценность ЗНАЧЕНИЕ FORMATTED_VALUE
21000 210.00
21123 211.23

бд<>скрипка <>здесь