【发布时间】:2021-02-19 12:32:17
【问题描述】:
我需要使用 SQL 查询将金额(数字)转换为单词的帮助。
示例:卢比。 287.06 -> 287 和 06/100 卢比
请求您建议我如何实现它。
问候,
阿肖克
【问题讨论】:
-
你应该用你真正使用的数据库来标记你的问题。鉴于Oracle标签更加具体和丰富,我删除了“mysql”。
我需要使用 SQL 查询将金额(数字)转换为单词的帮助。
示例:卢比。 287.06 -> 287 和 06/100 卢比
请求您建议我如何实现它。
问候,
阿肖克
【问题讨论】:
这不是我的解决方案,我在这里建立了这个功能:
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1407603857650
这里还有一篇文章: https://www.foxinfotech.in/2019/04/oracle-convert-currency-amount-in-words-using-pl-sql.html
这几乎正是您所需要的。 最后在我的演示中测试了这两种解决方案...
create or replace
function spell_number( p_number in number )
return varchar2
as
type myArray is table of varchar2(255);
l_str myArray := myArray( '',
' thousand ', ' million ',
' billion ', ' trillion ',
' quadrillion ', ' quintillion ',
' sextillion ', ' septillion ',
' octillion ', ' nonillion ',
' decillion ', ' undecillion ',
' duodecillion ' );
l_num varchar2(50) default trunc( p_number );
l_return varchar2(4000);
begin
for i in 1 .. l_str.count
loop
exit when l_num is null;
if ( substr(l_num, length(l_num)-2, 3) <> 0 )
then
l_return := to_char(
to_date(
substr(l_num, length(l_num)-2, 3),
'J' ),
'Jsp' ) || l_str(i) || l_return;
end if;
l_num := substr( l_num, 1, length(l_num)-3 );
end loop;
return l_return;
end;
/
可悲的是,对于您的示例,由于.,它不会完成这项工作,但我相信您可以结合一些灵魂,如果它有小数部分,您可以拆分数字,然后为数字和其他一些调用此函数对于小数部分...
【讨论】: