1. 程式人生 > >聯絡方式的校驗(自己的演算法和正則表達)

聯絡方式的校驗(自己的演算法和正則表達)

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 ;

自己的演算法因忘記修改函式名稱,導致覆蓋了,下次補充。