聯絡方式的校驗(自己的演算法和正則表達)
阿新 • • 發佈:2019-02-04
1、問題:
因為最近使用DB2資料庫,需要編寫資料欄位校驗的規則,那麼聯絡方式的規則一般分為手機和固話,根據現實中電話的格式型別,主要有(13xxxxxxxxx、15、17、18),固話分為XXXXXXXXX,0XX XXXXXXXX,0XX(X) XXXXXXXX,0XX(X)-XXXXXXXX 等,所以需要編寫函式進行判斷,正確返回1,其它根據情況返回對應的值。
正則表示式(ORACLE):
create or replace function f_chk_telno (v_telno varchar) return varchar2 as icount1 integer; icount2 integer; begin select count(*) into icount1 from dual where regexp_like(v_telno,'^(13|15|17|18)[[:digit:]]{9}$') ;--手機 select count(*) into icount2 from dual where regexp_like(v_telno,'(^0[[:digit:]]{2,3})|^(852|853)\-?[[:digit:]]{8}$');--固話 if icount1 = 1 or icount2 = 1 then return '1'; else return '2'; end if; end ;
自己的演算法因忘記修改函式名稱,導致覆蓋了,下次補充。