MASK_OUTER 函数

简介

MASK_OUTER 函数用于对字符串的外部字符进行掩码处理,将字符串左端和右端指定数量的字符替换为掩码字符,保留中间部分不变。该函数常用于数据脱敏场景,例如隐藏手机号码、身份证号、信用卡号等敏感信息的首尾部分。

语法

mask_outer(str, left_margin, right_margin [, mask_char])

参数说明

  • str: STRING 类型,需要进行掩码处理的原始字符串。
  • left_margin: INT 类型,左端需要被掩码替换的字符数量。
  • right_margin: INT 类型,右端需要被掩码替换的字符数量。
  • mask_char(可选): STRING 类型,用于替换外部字符的掩码字符,默认为 'X'

返回结果

返回一个 STRING 类型的值,其中左端 left_margin 个字符和右端 right_margin 个字符被替换为 mask_char,中间部分保持不变。

使用示例

  1. 基本用法,使用默认掩码字符 'X'

    SELECT mask_outer('This is a string', 1, 5);
    +-------------------------------------------+
    | mask_outer('This is a string', 1, 5)      |
    +-------------------------------------------+
    | Xhis is a sXXXXX                          |
    +-------------------------------------------+
  2. 指定自定义掩码字符 '*'

    SELECT mask_outer('This is a string', 1, 5, '*');
    +------------------------------------------------+
    | mask_outer('This is a string', 1, 5, '*')      |
    +------------------------------------------------+
    | *his is a s*****                               |
    +------------------------------------------------+
  3. 隐藏手机号码的前三位和后四位:

    SELECT mask_outer('13812345678', 3, 4);
    +----------------------------------+
    | mask_outer('13812345678', 3, 4)  |
    +----------------------------------+
    | XXX2345XXXX                      |
    +----------------------------------+
  4. 当输入为 NULL 时:

    SELECT mask_outer(NULL, 2, 3);
    +------------------------+
    | mask_outer(NULL, 2, 3) |
    +------------------------+
    | NULL                   |
    +------------------------+

注意事项

  • 当输入字符串 str 为 NULL 时,返回结果为 NULL。
  • 默认掩码字符为 'X',可通过第四个参数自定义。
  • left_marginright_margin 基于字符数量(而非字节数),因此对多字节字符(如中文)同样按字符计数。
  • left_margin + right_margin 大于或等于字符串长度时,所有字符都会被掩码替换。
  • 该函数与 mask_inner 函数互补:mask_outer 掩码两端、保留中间部分,mask_inner 掩码中间部分、保留两端。

联系我们
预约咨询
微信咨询
电话咨询