在PostgreSQL中将十进制数字转换为字母



我有一个函数已经将整数转换为字母,我想对它进行优化,将十进制数字转换为字母。

功能: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;小提琴这里

最新更新