TO_CHAR если после запятой нули, то их не выводить.

Select rtrim(to_char(1.123, 'fm99990d999'), '.,') From Dual;

Результат: 1,123

Select rtrim(to_char(1.000, 'fm99990d999'), '.,') From Dual;

Результат: 1

FM — Из строки удаляются все лишние нули и пробелы. Returns a value with no leading or trailing blanks.
D — Десятичный разделитель (например, точка), определяемый в локальном контексте. Returns in the specified position the decimal character, which is the current value of the NLS_NUMERIC_CHARACTER parameter. The default is a period (.). Restriction: You can specify only one decimal character in a number format model.