Использование 9
в модели (в отличие от 0
) означает, что вы не получаете ведущих нулей, поэтому вы можете использовать одну и ту же модель для всех этих:
SELECT TO_CHAR(12345,'9G999G999') "Amount" FROM DUAL;
Amount
----------
12,345
SELECT TO_CHAR(123456,'9G999G999') "Amount" FROM DUAL;
Amount
----------
123,456
SELECT TO_CHAR(1234567,'9G999G999') "Amount" FROM DUAL;
Amount
----------
1,234,567
Вы простовам нужно 9
с (и G
с) для самого длинного значения, которое вы ожидаете обработать.
Если вам не нужны начальные пробелы - в том числе и те, которые присутствуют во всех из них в качестве заполнителядля потенциального знака минус для отрицательных значений - вы можете добавить модификатор модели формата FM
'fill mode' :
SELECT TO_CHAR(12345,'FM999G999G999G999') "Amount" FROM DUAL;
Amount
----------------
12,345
SELECT TO_CHAR(123456,'FM999G999G999G999') "Amount" FROM DUAL;
Amount
----------------
123,456
SELECT TO_CHAR(1234567,'FM999G999G999G999') "Amount" FROM DUAL;
Amount
----------------
1,234,567