2015年12月16日 星期三

Oracle SQL: 檢查email欄位是否有異常字元

緣起: 因email結尾異常字元的A0, 造成發信程式一直running不會結束, 但怎麼都試不出來user是怎麼把這A0放進去的.

想法1: 寫function檢查ASCII code

想法2: 用replace取代字串中正常字元, 判斷是否還有非正常字元殘留

想法3: 用translate取代字串中正常字元, 判斷是否還有非正常字元殘留

這都有不夠單純精簡的問題.

最後是以regular expression function來作:


select nvl(length(regexp_replace(x_email_address,'[a-zA-Z0-9@,.]','')),0)
  from dual

當長度不為0時, 就是有異常字元了.

允許逗號是因為資料中有以逗號分隔多個email address, 如果只會放單一email, 把逗號排除、不作為取代項目即可. 若有其他字元(例如破折號 - 或底線 _ )要視為正常, 就再加進列表中.

完成~

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。