1.oracle数据库有个T表,表中有个字段num,如下所示
| id | num |
| 1 |12354789658222222 |
| 2 |12354789657893333 |
| 3 |12354789657892222 |
| 4 |12354789657833333 |
2.找出尾号规则为(AAAA)num。使用下面的SQL语句
select num from T where regexp_like(num,’(.)(\d)\2{3}$’); 查出的数据如下:
| 1 |12354789658222222 |
| 2 |12354789657893333 |
| 3 |12354789657892222 |
| 4 |12354789657833333 |
3.找出尾号规则为(AAAA),只要(AAAA)不要(AAAAA)
select num from T where regexp_like(num,’(.)(?!\1)(\d)\2{3}$’);
预测结果是:
| 2 |12354789657893333 |
| 3 |12354789657892222 |
但实际结果是:
no row
4.造成的原因是,零宽断言(?!\1)失效,我写的正则表达式已在外面测试过可以使用
5.哪位大神是否可以指导下,是我的“零宽断言”使用错了,还是oracle数据库的正则引擎不支持"零宽断言",还是oracle有自己的“”零宽断言”实现方式