自己动手,啥也不愁 -- 数字年转中文年的oracle function

网友投稿 704 2022-11-08

自己动手,啥也不愁 -- 数字年转中文年的oracle function

自己动手,啥也不愁 -- 数字年转中文年的oracle function

csdn上看到一个网友出的一个趣题。要求把

2008-03-30转成 二OO八年三月三十日

以前还没有见过这样的需求,呵呵呵,觉得有趣,自己用数组的方式实现了一个

如下

create or replace type T_CHAR_ARR is table of varchar2(20);/ create or replace function to_chdate(v_date date) return varchar2isv_return varchar2(60);v_year varchar(30);v_month varchar(15);v_day varchar(15);v_numarry1 T_CHAR_ARR ;v_numarry2 T_CHAR_ARR ;beginv_numarry1 := T_CHAR_ARR('零','一','二','三','四','五','六','七','八','九');v_numarry2 := T_CHAR_ARR('一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一');v_year := to_char(v_date, 'yyyy');v_month := to_char(v_date, 'mm');v_day := to_char(v_date, 'dd');v_month := v_numarry2(to_number(v_month));v_day := v_numarry2(to_number(v_day)); for ind in 1..length(v_year) loopv_return := v_return || v_numarry1(to_number(substr(v_year, ind, 1))+1);end loop;v_return := v_return || '年' || v_month || '月' || v_day || '日';return v_return;end;/ SQL> select to_chdate(sysdate) from dual; TO_CHDATE(SYSDATE)

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

二零零九年八月六日

虽然方法有些笨笨的,但是功能还是完成了,这里可以把type和字符数组的常数定义到一个package header里,这样就比较好了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小知识也要积累,养成好的学习态度--Oracle的数组的学习
下一篇:mybatis动态SQL if的test写法及规则详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~