我有一张如下表格;
ID(int) | P_DATE(date) | EXPLANATION(varchar2)
-----------------------------------------------
1 | 22.12.2013 | 'File upload'
2 | 31.12.2013 | 'Card Payment'
3 | 24.02.2014 | 'Unit TN=5321234564'
在Explanation
列的第三行,有一个电话号码(5321234564)
如何使用'*'屏蔽此电话号码?
屏蔽后,select query应返回如下结果?
ID(int) | P_DATE(date) | EXPLANATION(varchar2)
-----------------------------------------------
1 | 22.12.2013 | 'File upload'
2 | 31.12.2013 | 'Card Payment'
3 | 24.02.2014 | 'Unit TN=532*****64'
答案 0 :(得分:2)
如果您可以更改查询,那么很简单:
select 'Unit TN=5321234564', regexp_replace('Unit TN=5321234564', 'TN=([0-9]{3})([0-9]{5})([0-9]{2})', 'TN=\1*****\3') from dual
(当然,如果您的电话号码是其他格式,请更改正则表达式)
如果您无法更改查询,请将原始EXPLANATION
列重命名为EXPLANATION_ORIG
,添加EXPLANATION
列并添加触发器更改INSERT'或UPDATE'd数据以将原始数据保存到{{ 1}}和屏蔽数据到EXPLANATION_ORIG
列。