2009-04-28 4 views
9

Я работаю над запросом, который возвращает числовые значения (валюта). Некоторые из значений являются целыми числами и отображаются как 3, 5, 2 и т. Д., В то время как другие числа приближаются, как 2.52, 4.50 и т. Д.Всегда показывать десятичные разряды в SQL?

Как заставить оракул всегда показывать десятичные знаки?

Благодаря

ответ

9
+0

Спасибо. Может ли это также использоваться для добавления нулей в числа, которые меньше 1? например 0,52 вместо .52? – 2009-04-28 18:25:59

+5

Из верхней части головы используйте TO_CHAR (pAmount, '9,999,990,99'); – cagcowboy

5

Дисплей и форматирование данных должны быть обработаны на уровне представления - не данные одного.

Используйте средства, предоставляемые вашим интерфейсом, чтобы отформатировать значения по своему усмотрению.

+1

Что делать, если Oracle * * является презентация слой? например инструментарий MODPLSQL? – cagcowboy

+0

или простой отчет в SQL * Plus? – cagcowboy

+0

на самом деле не было ясно из вопроса :-). –

0

В SQL * Plus можно использовать директиву, чтобы указать, форматирование на основе каждого столбца, отдельно от самого запроса. Таким образом, вы сохраняете свой запрос «чистым» для возможных других целей и все еще получаете свое форматирование. (В SQL * Plus, по крайней мере ...)

например

COLUMN SAL FORMAT 99,990.99 

Google для "SQL * Plus Руководство пользователя и справочник", и вы должны получить ссылки на местоположение Oracle для вашей версии Oracle. 10.1 - here, если это будет сделано. Они, вероятно, будут примерно одинаковыми, заметьте: я не думаю, что SQL * Plus сильно изменился, так как я узнал об этом в 1988 году в Oracle 5.1.17 ...

1

to_char исправляет десятичную проблему, но вы должны быть уверены в длине. Если он длиннее формата, он будет показывать номер как ####. Если число короче, тогда оно останется пробелом перед номером. например

to_char(123.45),'99.00') покажет ####

и

to_char(123.45),'999999.00') покажет ' 123.45'.

Итак, если вам нужно экспортировать результаты в CSV или Excel, эти числа будут обрабатываться как строка.

Таким образом, я не нашел для этого решения.

+0

с использованием команды 'fm' в начале форматирования удалят лишние пробелы. – CJC

+0

. Решение было перечислено ниже: TO_CHAR (your_value, 'fm990.00'), заставляет 2 десятичных знака и опускает ведущие пробелы – OverMars

5

Для повышения ответы уже данные, вы можете использовать:

  • TO_CHAR(your_value,'fm999.99') предотвратить начальные пробелы

    ____3.45 становится 3.45 (_ указывает пробельные)

  • TO_CHAR(your_value,'fm990.99') заставить значения меньше 1 для отображения начального нуля

    .52 становится 0.52

  • TO_CHAR(your_value,'fm990.00') силой 2 знака после запятой, даже если 0

    6.3 становится 6.30

  • (TO_CHAR(your_value,'fm990.00')||'%') добавить знак процента

    18.6 становится 18.60%

источник: https://community.oracle.com/thread/968373?start=0&tstart=0

Смежные вопросы