MASK_INNER 函数

简介

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

语法

mask_inner(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_inner('This is a string', 1, 5);
    +-------------------------------------------+
    | mask_inner('This is a string', 1, 5)      |
    +-------------------------------------------+
    | TXXXXXXXXXXtring                          |
    +-------------------------------------------+
  2. 指定自定义掩码字符 '*'

    SELECT mask_inner('This is a string', 1, 5, '*');
    +------------------------------------------------+
    | mask_inner('This is a string', 1, 5, '*')      |
    +------------------------------------------------+
    | T**********tring                               |
    +------------------------------------------------+
  3. 处理包含中文字符的字符串:

    SELECT mask_inner('abc 你好, 世界 end', 1, 5);
    +------------------------------------------------+
    | mask_inner('abc 你好, 世界 end', 1, 5)          |
    +------------------------------------------------+
    | aXXXXXXXXXXXXXX界 end                          |
    +------------------------------------------------+
  4. 当输入为 NULL 时:

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

注意事项

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

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