oracle 函数 截取 连接 替换 判断

一个处理不规范日期的函数,廖记一下吧,以免再忘。

 

--注意全角半角
CREATE OR REPLACE function f_str2form( date_string
in varchar2 ) return VARCHAR2 is v_dateform VARCHAR2;--声明方式 v_tempStr VARCHAR2; begin exit when (nvl(date_string,'') = ''); IF REGEXP_LIKE(t.USE_DATE, '\d{4}-\d{2}-\d{2}|\d{4}\/\d{2}\/\d{2}') THEN --使用if需要使用then v_dateform := to_date(t.USE_DATE, 'yyyy/mm/dd');--函数中的等于(或者是赋值)用的是:= RETURN to_char(v_dateform,'yyyy/mm/dd'); ELSE IF REGEXP_LIKE(t.USE_DATE, '\d{1}\/\d\/\d{2}|\d{2}\/\d\/\d{2}') THEN v_tempStr := substr(l.USE_DATE,instr( l.USE_DATE, '/',2),-2);--负数倒着截取 v_dateform := '20'||v_tempStr||substr(l.USE_DATE,(instr( l.USE_DATE, '/',2)-1)); RETURN to_char(v_dateform,'yyyy/mm/dd'); ELSE IF REGEXP_LIKE(t.USE_DATE, '\d{1,2}\[月]\d{1,2}\[日]') THEN v_tempStr := substr(l.USE_DATE,instr( l.USE_DATE, '')); v_tempStr := REPLACE(t.USE_DATE,'','/'); v_tempStr := REPLACE(t.USE_DATE,'','/'); v_dateform := to_char(sysdate, 'yyyy')||v_tempStr; RETURN v_dateform; ELSE RETURN ''; END IF; --需要使用end if 结束if 并且使用分号结束 END;

 

posted @ 2016-05-27 21:39  长风傲天  阅读(332)  评论(0编辑  收藏  举报
[h1[ [B]天涯雪[/B] [/h1]