使用Oracle正则表达式在500W条数据里面选取吉祥号
使用Oracle正则表达式在500W条数据里面选取吉祥号
摘要: 使用Oracle正则表达式在500W条数据里面选取吉祥号
最近做一个项目,需要在7位数字串中,按下列规则选取吉祥号:
1、七位序列号中不能出现数字4
2、七位数字从右向左数,至少要出现3位一样的数字,而且一样的数字只能是6、8、9中的任意一个,如1235666。
3、七位数字可以出现全部相同的数字,如:1111111、2222222、3333333、5555555、6666666、7777777
在Oracle 10g里面,我们可以轻松实现上述要求,一条SQL语句就搞定,如下:
SELECT * FROM a WHERE REGEXP_LIKE (id, '[^4]{4}[6]{3,6}$') OR REGEXP_LIKE (id, '[^4]{4}[8]{3,6}$') OR REGEXP_LIKE (id, '[^4]{4}[9]{3,6}$') OR REGEXP_LIKE (id, '^([0-35-9])\1{6}$');