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;
原文地址:https://www.cnblogs.com/yeyuchangfeng/p/5536123.html