我试图设置Oracle Data Redaction以消除一些被引入我们系统的SSN。我尝试使用DBMS_REDACT.REDACT_NUM_US_SSN_F5,但这有点太字面了 - 因为我在新英格兰,有很多带有前导0的SSN在SSN存储的数字字段中消失(是的,我知道,我没有设计它。我尝试进行REGEXP匹配,但是(可预测)似乎只对字符字段起作用。
是否有人知道如何使其始终返回999991234,无论前导零(或单个0,如果位置未填充)?感谢。
答案 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;
尝试使用表达式仅适用于某些标准格式
的表达式