Oracle数据编辑

时间:2015-02-09 20:42:39

标签: oracle

我试图设置Oracle Data Redaction以消除一些被引入我们系统的SSN。我尝试使用DBMS_REDACT.REDACT_NUM_US_SSN_F5,但这有点太字面了 - 因为我在新英格兰,有很多带有前导0的SSN在SSN存储的数字字段中消失(是的,我知道,我没有设计它。我尝试进行REGEXP匹配,但是(可预测)似乎只对字符字段起作用。

是否有人知道如何使其始终返回999991234,无论前导零(或单个0,如果位置未填充)?感谢。

1 个答案:

答案 0 :(得分:0)

BEGIN
 DBMS_REDACT.ADD_POLICY(
 object_schema =>'schemaname', 
 object_name =>'tablename', 
 column_name =>'columnname', 
 policy_name =>'policyneme', 
 function_type =>DBMS_REDACT.REGEXP, 
 policy_description =>'Masks the last 4 digits of SSN', 
 regexp_replace_string =>'XXXXX\3', 
 regexp_position =>1, 
 regexp_occurrence =>0, 
 regexp_match_parameter =>'i', 
 expression =>'1=1', 
 regexp_pattern =>'(\d\d\d)(\d\d)(\d\d\d\d)'
);
END;

尝试使用表达式仅适用于某些标准格式

的表达式