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

如何在Oracle SQL Developer中实现邮箱地址的部分掩码处理

Oracle邮箱地址前缀掩码解决方案

方法一:使用正则表达式(REGEXP_REPLACE)

通过正则匹配邮箱前缀的首尾字符,结合RPAD生成对应数量的星号替换中间部分,同时处理短前缀的边界情况:

SELECT 
    name,
    emailAddress,
    CASE 
        -- 前缀长度≤2时直接保留原邮箱
        WHEN INSTR(emailAddress, '@') - 1 <= 2 THEN emailAddress
        ELSE REGEXP_REPLACE(
            emailAddress,
            '^(.)[^@]+(.)(@.*)$', -- 捕获前缀首字符、尾字符及@后缀
            '\1' || RPAD('*', INSTR(emailAddress, '@') - 3, '*') || '\2\3'
        )
    END AS emailMask
FROM myEmailTable;

方法二:字符串拼接(无正则)

通过SUBSTR和INSTR拆分邮箱各部分,手动拼接首字符、星号、尾字符和后缀:

SELECT 
    name,
    emailAddress,
    CASE 
        -- 前缀长度≤2时直接保留原邮箱
        WHEN INSTR(emailAddress, '@') - 1 <= 2 THEN emailAddress
        ELSE SUBSTR(emailAddress, 1, 1) || -- 取前缀首字符
             RPAD('*', INSTR(emailAddress, '@') - 3, '*') || -- 生成对应数量星号
             SUBSTR(emailAddress, INSTR(emailAddress, '@') - 1, 1) || -- 取前缀尾字符
             SUBSTR(emailAddress, INSTR(emailAddress, '@')) -- 拼接@及后缀
    END AS emailMask
FROM myEmailTable;

示例效果

nameemailAddressemailMask
Bon JoviBonJovi@gmail.comB*****i@gmail.com
Dan BrownDbrown@gmail.comD****n@gmail.com
Alicea@gmail.coma@gmail.com
Bobbob@outlook.comb**b@outlook.com
Eveev@yahoo.comev@yahoo.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:54:38