oracle 金额的中文,新手请问:oracle中如何把数字转换成汉字

SQL codelym@TDWORA> CREATE OR REPLACE FUNCTION fn_con_num1(num_in varchar)

2 RETURN VARCHAR2

3 IS

4 v_return VARCHAR2(4);

5 BEGIN

6 IF length(num_in)=1 THEN

7 SELECT decode(num_in,'0','零','1','壹','2','贰','3','参','4','肆','5','伍','6','陆','7','柒','8','捌','9','玖','') AS ret

8 INTO v_return

9 FROM dual;

10 END IF;

11 RETURN v_return;

12 EXCEPTION WHEN OTHERS THEN

13 RETURN NULL;

14 END;

15 /

Function created.

lym@TDWORA> CREATE OR REPLACE FUNCTION fn_con_num2(num_in number)

2 RETURN VARCHAR2

3 IS

4 v_char VARCHAR2(20);

5 v_char_cvt VARCHAR2(80);

6 BEGIN

7 v_char := lpad(to_char(num_in),10,'0');

8 SELECT DECODE(SUBSTR(v_char,1,1),'0','',fn_con_num1(SUBSTR(v_char,1,1))||'十')||

9 DECODE(SUBSTR(v_char,2,1),'0','',fn_con_num1(SUBSTR(v_char,2,1))||'亿')||

10 DECODE(SUBSTR(v_char,3,1),'0','零',fn_con_num1(SUBSTR(v_char,3,1))||'千')||

11 DECODE(SUBSTR(v_char,4,1),'0','零',fn_con_num1(SUBSTR(v_char,4,1))||'佰')||

12 DECODE(SUBSTR(v_char,5,1),'0','零',fn_con_num1(SUBSTR(v_char,5,1))||'十')||

13 DECODE(SUBSTR(v_char,6,1),'0','零',fn_con_num1(SUBSTR(v_char,6,1))||'万')||

14 DECODE(SUBSTR(v_char,7,1),'0','零',fn_con_num1(SUBSTR(v_char,7,1))||'千')||

15 DECODE(SUBSTR(v_char,8,1),'0','零',fn_con_num1(SUBSTR(v_char,8,1))||'佰')||

16 DECODE(SUBSTR(v_char,9,1),'0','零',fn_con_num1(SUBSTR(v_char,9,1))||'十')||

17 DECODE(SUBSTR(v_char,10,1),'0','',fn_con_num1(SUBSTR(v_char,10,1))) AS cvt

18 INTO v_char_cvt

19 FROM dual;

20 v_char_cvt:=RTRIM(LTRIM(v_char_cvt,'零'),'零');

21 WHILE INSTR(v_char_cvt,'零零')>=1 LOOP

22 v_char_cvt:=replace(v_char_cvt,'零零','零');

23 END LOOP;

24 RETURN v_char_cvt;

25 END;

26 /

Function created.

lym@TDWORA> SELECT fn_con_num2(2110028568) AS cvt FROM DUAL;

CVT

---------------------------------------------

贰十壹亿壹千零贰万捌千伍佰陆十捌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值