Функция to_char(число) в postgres

я хочу отобразить/преобразовать число в символ (той же длины), используя функцию to_char().

В оракуле я могу написать как

SELECT to_char(1234) FROM DUAL

Но в postgres SELECT to_char(1234) не работает.


person jobi88    schedule 04.01.2013    source источник


Ответы (4)


Вам необходимо указать маску формата. В PostgreSQL по умолчанию нет:

select to_char(1234, 'FM9999');

Если вы не знаете, сколько цифр, просто оцените максимум:

select to_char(1234, 'FM999999999999999999');

Если в числе меньше цифр, это не будет иметь никаких побочных эффектов.

Если вам не нужно какое-либо форматирование (например, десятичная точка, разделитель тысяч), вы также можете просто преобразовать значение в текст:

select 1234::text
person a_horse_with_no_name    schedule 04.01.2013
comment
Как я могу узнать второй аргумент (значение с указанным количеством цифр) для разных значений (разной длины). - person jobi88; 04.01.2013
comment
@jobi88: все это задокументировано в руководстве: postgresql.org/docs/ текущий/статический/функции-форматирование.html - person a_horse_with_no_name; 04.01.2013
comment
Я не мог узнать точную вещь для меня. Есть ли способ узнать, сколько девяток мне нужно добавить, чтобы получить полное число. Например, в оракуле я могу написать как. ВЫБЕРИТЕ to_char(ac_no) из учетной записи. (здесь значения ac_no могут иметь разную длину). В этом случае, как я могу узнать второй аргумент?? - person jobi88; 04.01.2013

вы должны указать числовой формат, т.е.:

to_char(1234, '9999')

Загляните сюда для получения дополнительной информации: http://www.postgresql.org/docs/current/static/functions-formatting.html

person Lorenzo L    schedule 04.01.2013

Функция CAST у меня работала.

SELECT CAST(integerv AS text) AS textv
FROM (
       SELECT 1234 AS integerv
     ) x

OR

SELECT integerv::text AS textv
FROM (
       SELECT 1234 AS integerv
     ) x
person changed    schedule 25.01.2019

Ты можешь использовать:

1234||''

Он работает с большинством баз данных.

person Eduardo    schedule 21.09.2017
comment
Я просто не могу понять, почему использование concatenate для принудительного неявного преобразования типов лучше, чем явное приведение. - person Merlin; 20.02.2019
comment
@Merlin Это более совместимо. Таким образом, вы можете использовать один и тот же SQL для нескольких баз данных. - person Eduardo; 22.02.2019