#postgresql
Вопрос:
В MSSQL STR возвращает символьные данные, преобразованные из числовых данных. Символьные данные корректны, имеют заданную длину и десятичную точность. ВЫБЕРИТЕ STR(123.45, 6, 1), возвращающий значение «123.5» (а не «123.5») в MSSQL. Кроме того, ВЫБЕРИТЕ STR(123.45, 2, 2), верните «* * » в MSSQL.
Комментарии:
1.
to_char()
postgresql.org/docs/current/functions-formatting.html
Ответ №1:
Прямой соответствующей функции Postgres не существует. У вас есть пара вещей: округление переменной длины, заполнение результата и проверка длины результата. Но достаточно просто создать свою собственную функцию SQL: (см. демонстрацию)
create or replace
function str(value_in numeric
,length_in integer default 7
,dec_len_in integer default 2
)
returns text
language sql
as $
select case when length(val) > length_in
then rpad('*',length_in,'*') -- or just '**'
else lpad(val,length_in,'#') -- for demo using #, for real use ' '
end
from (select round(value_in, dec_len_in )::text) sq(val)
$;