跳到主要内容

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位时,结果可能重叠

示例

  1. 基本用法:11位手机号脱敏
SELECT digital_masking('13812345678');
+--------------------------------+
| digital_masking('13812345678') |
+--------------------------------+
| 138****5678 |
+--------------------------------+
  1. 不同长度的数字
SELECT digital_masking('1234567890');
+-------------------------------+
| digital_masking('1234567890') |
+-------------------------------+
| 123****7890 |
+-------------------------------+
  1. 短数字(少于7位)
SELECT digital_masking('123');
+------------------------+
| digital_masking('123') |
+------------------------+
| 123****123 |
+------------------------+
  1. NULL 值处理
SELECT digital_masking(NULL);
+-----------------------+
| digital_masking(NULL) |
+-----------------------+
| NULL |
+-----------------------+
  1. 带有 utf-8 的字符串
SELECT digital_masking('13812ṭṛ34678');
+-------------------------------------+
| digital_masking('13812ṭṛ34678') |
+-------------------------------------+
| 138****4678 |
+-------------------------------------+