oracle中求正则表达式!
想了很久想不出简便的办法,目前感觉正则表达式会比较简单,但正则表达式不是很懂,求大神帮忙,如有其它简单办法,求教育。
需求如下:一个手机号码如果含有以下规则之一,则判定属于该级别(级别太多,就举其中一个例子【第10个级别】)
888
44444
ABCDEF(连续递增)
56789
AAABBB(A≠4,B=0.1.2.3.5)
AAABBB(A=4,B=6.7.8.9)
AABBCC(均不带4,连续递增)
ABCDABCD(ABCD可不连续,均不带4)
AAABB(A≠4,B=6.7.8.9)
AABBB(A≠4,B=6.7.8.9)
需要写一个Function(手机号码,等级) 返回“是”或“否”
试了下AAABBB(A≠4,B=0.1.2.3.5) 这个例子,但好像不对
declare
v_bill_id varchar2(500) default '13513565552';
begin
dbms_output.put_line(regexp_instr(v_bill_id,'([^4]){3}([01235]){3}'));
end;
------最佳解决方案--------------------正则表达式处理不了这么复杂的规则,你可以先把AABBCC这类的转换为可能的数字组合并放在同一级,然后用like操作比较好
------其他解决方案--------------------看不懂,楼主能不能说清楚点规则
------其他解决方案--------------------已解决,对每个规则都写了个function封装成一个“规则包”
再写一个 “级别包”
再写一个 “档次包”