天天看點

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