2011-01-24 2 views
20

Ребята я хочу напечатать следующие данные с разделенными значениями запятой с помощью Oracle SQLOracle SQL-запрос на номер формата запятой

696585242087 


to 

69,658,524,2087 

и то же самое для десятичной.

+2

Почему вы хотите, запятая перед правым более 4 цифр? – MatBailie

+0

жаль, что это было, например. –

ответ

27
SELECT TO_CHAR(696585242087, '99G999G999G9999', 'NLS_NUMERIC_CHARACTERS=",."') 
FROM dual 
+3

+1 Позволяет использовать [страны] (http://en.wikipedia.org/wiki/Decimal_separator#Countries_using_Arabic_numerals_with_decimal_comma), которые используют десятичную запятую –

+1

Что делать, если я не знаю, сколько цифр имеет номер источника, я имею в виду, любой шаблон для группировки каждые 3 цифры независимо от длины номера? –

16

См the Oracle docs для все безумия, которое может быть сделано для форматирования чисел. Короткая версия, вам нужна функция «TO_CHAR», а также обеспечить строку форматирования для вывода:

TO_CHAR(col_name, '999,999,999,999') 

Если делать то, что вам нужно.

1

Принимая обновление в Dead programmer «з (24/Jan/2011) (оригинальный автор вопроса) и комментарием Amir Pashazadeh (5/Mar/2016), мы можем получить желаемый разделенных запятыми формат в следующем примере.

Этот код применяется для чисел с равным или меньше, чем 15 цифр, если вам нужно для большей длины, вам необходимо добавить больше 999999 по с максимальной длиной вы будете управлять.

SELECT TRIM(TO_CHAR(12345678, '999,999,999,999,999')) ttry FROM DUAL 
UNION ALL 
SELECT TRIM(TO_CHAR( 1234, '999,999,999,999,999')) ttry FROM DUAL 
; 

Результат:

TTRY
12.345.678
1.234

SqlDeveloper Example

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