PL / SQL将数字转换为文本

时间:2013-02-13 12:51:52

标签: oracle function plsql jasper-reports

我使用Jaspersoft iReport工具从Oracle DB中的表中设计报表。 我得到一个数字值,我想将其转换为文本。

例如,如果值im获得 1652 我需要一个Pl / SQL函数将其转换为一千五百二十

有没有可用的功能?

2 个答案:

答案 0 :(得分:2)

您可以将数字转换为时间戳,然后返回以获得整数:

SQL>    select to_char(to_timestamp(lpad( 1652 , 9, '0'), 'FF9' ), 'Ffsp' ) str
  2    from dual;

STR
---------------------------------------------------------------------------
One Thousand Six Hundred Fifty-Two

SQL> select to_char(to_timestamp(lpad( 1502 , 9, '0'), 'FF9' ), 'Ffsp' ) str from dual;

STR
---------------------------------------------------------------------------
One Thousand Five Hundred Two

这将在一定程度上起作用(它将返回的字符串的大小是有限的)。否则你必须编写自己的函数来执行此操作。

答案 1 :(得分:1)

你可以使用这个技巧:

DECLARE 
   ws_number NUMBER := 30; 
   ws_text   VARCHAR2(60); 
BEGIN 
   ws_text := to_char(to_date(ws_number,'j'), 'jsp'); 
 END;

j将数字转换为Julian日期,jsp返回Julian日期的值。它在this Ask Tom post

上有更全面的描述