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,中间部分保持不变。
使用示例
-
基本用法,使用默认掩码字符 'X':
SELECT mask_outer('This is a string', 1, 5);
+-------------------------------------------+
| mask_outer('This is a string', 1, 5) |
+-------------------------------------------+
| Xhis is a sXXXXX |
+-------------------------------------------+
-
指定自定义掩码字符 '*':
SELECT mask_outer('This is a string', 1, 5, '*');
+------------------------------------------------+
| mask_outer('This is a string', 1, 5, '*') |
+------------------------------------------------+
| *his is a s***** |
+------------------------------------------------+
-
隐藏手机号码的前三位和后四位:
SELECT mask_outer('13812345678', 3, 4);
+----------------------------------+
| mask_outer('13812345678', 3, 4) |
+----------------------------------+
| XXX2345XXXX |
+----------------------------------+
-
当输入为 NULL 时:
SELECT mask_outer(NULL, 2, 3);
+------------------------+
| mask_outer(NULL, 2, 3) |
+------------------------+
| NULL |
+------------------------+
注意事项
- 当输入字符串
str 为 NULL 时,返回结果为 NULL。
- 默认掩码字符为
'X',可通过第四个参数自定义。
left_margin 和 right_margin 基于字符数量(而非字节数),因此对多字节字符(如中文)同样按字符计数。
- 当
left_margin + right_margin 大于或等于字符串长度时,所有字符都会被掩码替换。
- 该函数与
mask_inner 函数互补:mask_outer 掩码两端、保留中间部分,mask_inner 掩码中间部分、保留两端。