我使用Jaspersoft iReport工具从Oracle DB中的表中设计报表。 我得到一个数字值,我想将其转换为文本。
例如,如果值im获得 1652 我需要一个Pl / SQL函数将其转换为一千五百二十
有没有可用的功能?
答案 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