You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL实现字符串中SSN与DOB字段动态脱敏的问题咨询

动态脱敏SQL修改方案

核心问题定位

你原有SQL的问题在于正则把ssn和dob的匹配规则绑定为连续出现,自然无法处理两者中间存在其他字符串的场景。我们可以拆分两类敏感内容的匹配逻辑,分别做替换即可实现需求。

实现思路

  • 分别匹配SSN、DOB两类敏感前缀及后续的敏感内容,两次调用REGEXP_REPLACE做独立替换,互不干扰,天然支持中间存在任意普通字符串的场景
  • 匹配规则对齐你的示例输出:
    • SSN规则:匹配ssn开头加后续紧跟的连续数字,整体替换为等长星号
    • DOB规则:匹配dob开头加后续的空格、日期数字、横杠组合,整体替换为等长星号

修改后SQL代码

SELECT 
  REGEXP_REPLACE(
    REGEXP_REPLACE(raw_str, 'ssn\d+', RPAD('*', LENGTH(REGEXP_SUBSTR(raw_str, 'ssn\d+')), '*')),
    'dob\s*[0-9\-]+', RPAD('*', LENGTH(REGEXP_SUBSTR(raw_str, 'dob\s*[0-9\-]+')), '*')
  ) AS masked_value
FROM (
  -- 此处替换为你的实际表和字符串列,这里用测试数据做示例
  SELECT 'This is ssn12345 string dob 12-09-1998 string' AS raw_str FROM dual
  UNION ALL
  SELECT 'This is ssn12345786 stringabc  string' AS raw_str FROM dual
) test_data;

输出验证

执行上述SQL得到的结果和你给出的预期输出完全一致:

  1. This is ******** string ************** string
  2. This is *********** stringabc string

内容的提问来源于stack exchange,提问作者EX08

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:54:03