DIGITAL_MASKING
描述
DIGITAL_MASKING 函数用于对数字字符串进行脱敏处理。按照固定格式将数字的中间部分替换为 ****,保留前3位和后4位。等价于 CONCAT(LEFT(id, 3), '****', RIGHT(id, 4))。
语法
DIGITAL_MASKING(<digital_number>)
参数
| 参数 | 说明 |
|---|---|
<digital_number> | 需要脱敏的数字字符串。类型:VARCHAR |
返回值
返回 VARCHAR 类型,为脱敏后的数字字符串。
特殊情况:
- 如果参数为 NULL,返回 NULL
- 脱敏格式为:前3位 +
****+ 后4位 - 字符串长度不足7位时,结果可能重叠
示例
- 基本用法:11位手机号脱敏
SELECT digital_masking('13812345678');
+--------------------------------+
| digital_masking('13812345678') |
+--------------------------------+
| 138****5678 |
+--------------------------------+
- 不同长度的数字
SELECT digital_masking('1234567890');
+-------------------------------+
| digital_masking('1234567890') |
+-------------------------------+
| 123****7890 |
+-------------------------------+
- 短数字(少于7位)
SELECT digital_masking('123');
+------------------------+
| digital_masking('123') |
+------------------------+
| 123****123 |
+------------------------+
- NULL 值处理
SELECT digital_masking(NULL);
+-----------------------+
| digital_masking(NULL) |
+-----------------------+
| NULL |
+-----------------------+
- 带有 utf-8 的字符串
SELECT digital_masking('13812ṭṛ34678');
+-------------------------------------+
| digital_masking('13812ṭṛ34678') |
+-------------------------------------+
| 138****4678 |
+-------------------------------------+