就是说对查询的数据含有这个值的值进替换或者加密。不影响值前后的数据
select * from abc where
(regexp_instr(c,'[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]')>0)
Select后面是可以接函数调用的,例如说 将查询出来的C字段转换为大写,可以使用 select upper(t.c) from abc t where
(regexp_instr(t.c,'[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]')>0) ;所以你通过写一个函数实现替换或者加密的功能,然后在select语句中调用,当然简单的替换你可以直接使用Oracle自带函数replace 或者translate函数去实现。
满意的话请采纳。
用regexp_replace或者regexp_substr,可以对满足你指定的这个正则表达式的字符串进行替换或者截取,比如
select regexp_replace('haha411081199611114568',
'[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]',
'abcdefg')
from dual