1

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

例如,如果我得到的值是1652 ,我需要一个 Pl/SQL 函数将其转换为一千五百零二

有没有可用的功能?

4

2 回答 2

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

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

于 2013-02-13T13:03:48.863 回答
1

你可以使用这个技巧:

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

j数字转换为儒略日期并jsp返回儒略日期的值。在此 Ask Tom 帖子中对其进行了更全面的描述

于 2013-02-13T13:02:22.113 回答