Маскирование чисел Oracle to_char для postgres

Я переношу процедуру из Oracle в Postgres. При выборе запроса у меня есть TO_CHAR(v_numeric, '990.000')

Кажется, тот же TO_CHAR(v_numeric, '990.000') работает в Postgres с тем же результатом.

Может кто-нибудь объяснить, что делает «990.000» в запросе?

TO_CHAR(123.4, '990.000') возвращает 123.400 как в Oracle, так и в Postgres. В то время как TO_CHAR(1234.400, '990.000') возвращает ######## в Oracle и ###.### в Postgres. Содержат ли эти ######## и ###.### одно и то же введенное числовое значение?


person Manoharan    schedule 10.02.2021    source источник


Ответы (1)


to_char — это функция для форматирования числа в виде строки для вывода. Функция PostgreSQL предназначена специально для совместимости с Oracle, но, как видите, она не полностью совместима.

Формат 990.000 означает, что перед запятой должно быть от одной до трех цифр, а после нее — три цифры. 9 означает, что значение 0 в этой позиции приведет к пробелу, а не к 0.

Символы # означают, что число не может быть представлено в этом формате. Причина в том, что перед запятой более трех цифр.

Результирующая строка не содержит числа, это отображение числа в виде строки. Он не содержит ничего, кроме символов, из которых он состоит.

person Laurenz Albe    schedule 10.02.2021