我有一个函数已经将整数转换为字母,我想对它进行优化,将十进制数字转换为字母。
功能:https://dbfiddle.uk/?rdbms=postgres_12&小提琴=22a67dd54291d7ffb527e2f9d482ca示例:2053.21
我试过了:
select concat(en_function(2053), ' point', en_function(21))
但这不是一个好办法我想放CCD_ 1;伍仟肆佰贰拾叁元贰角壹分";
我该怎么做?
最简单的方法是编写一个包装函数,并对包装函数中数字的实数和小数部分调用原始函数两次:
CREATE OR REPLACE FUNCTION en_function2(nombre decimal)
RETURNS text
AS $BODY$
select case when substring(nombre::text from '[.]') is null or replace(substring(nombre::text from '[.][0-9]*'),'.','')::int = 0 then en_function(nombre)
else concat(en_function(replace(substring(nombre::text from '[0-9]*[.]'),'.','')::decimal), ' point ', en_function(replace(substring(nombre::text from '[.][0-9]*'),'.','')::decimal))
end
$BODY$ LANGUAGE sql
select en_function2(2053.21);
db<gt;小提琴这里