Но это не преобразует строку в десятичное число.вместо этого он конвертируется в целое число (4).
Не совсем.Формат отображаемого числа зависит только от клиента (SQL * plus / SQL Developer и т. Д.) И не имеет никакого отношения к тому, как Oracle хранит ваши числа внутри системы, что зависит от точности, указанной вами для этого столбца.
InЧтобы увидеть числа в нужном формате независимо от клиента, и, если десятичный разделитель вашей территории равен '.'
(NLS_NUMERIC_CHARACTERS
равен '.,'
), вы можете просто использовать TO_CHAR
SELECT TO_CHAR('04.0','0D9') FROM dual;
4.0