MASK_LAST_N
描述
MASK_LAST_N 函数用于对字符串的后 N 个字节进行脱敏。将后 N 个字节中的大写字母替换为 X,小写字母替换为 x,数字替换为 n。
语法
MASK_LAST_N(<str>[, <n>])
参数
| 参数 | 说明 |
|---|---|
<str> | 需要被脱敏的字符串。类型:VARCHAR |
<n> | 需要脱敏的后 N 个字节数(可选,默认为整个字符串)。类型:INT |
返回值
返回 VARCHAR 类型,为后 N 个字节被脱敏后的字符串。
<<<<<<< Updated upstream
- 任意参数中有一个为 NULL,则返回 NULL
- 非字母和数字会原样返回
- 仅支持ASCII字母的替换,非ASCII字母(如带重音的拉丁字母)会原样保留 ======= 特殊情况:
- 如果任意参数为 NULL,返回 NULL
- 非字母和数字字符保持不变
- 如果
<n>大于字符串长度,脱敏整个字符串
Stashed changes
示例
- 基本用法:脱敏后4个字节
SELECT mask_last_n('1234-5678', 4);
+-----------------------------+
| mask_last_n('1234-5678', 4) |
+-----------------------------+
| 1234-nnnn |
+-----------------------------+
- 不指定 n(脱敏整个字符串)
SELECT mask_last_n('abc123');
+----------------------+
| mask_last_n('abc123') |
+----------------------+
| xxxnnn |
+----------------------+
- n 超过字符串长度
SELECT mask_last_n('Hello', 100);
+---------------------------+
| mask_last_n('Hello', 100) |
+---------------------------+
| Xxxxx |
+---------------------------+
- NULL 值处理
SELECT mask_last_n(NULL, 5);
+----------------------+
| mask_last_n(NULL, 5) |
+----------------------+
| NULL |
+----------------------+
- n 为 0(不脱敏任何字符)
SELECT mask_last_n('Hello123', 0);
+----------------------------+
| mask_last_n('Hello123', 0) |
+----------------------------+
| Hello123 |
+----------------------------+
- n 大于字符串长度(脱敏整个字符串)
SELECT mask_last_n('Test', 100);
+--------------------------+
| mask_last_n('Test', 100) |
+--------------------------+
| Xxxx |
+--------------------------+
- 脱敏邮箱域名部分
SELECT mask_last_n('user@example.com', 11);
+-------------------------------------+
| mask_last_n('user@example.com', 11) |
+-------------------------------------+
| user@xxxxxxx.xxx |
+-------------------------------------+
- 脱敏手机号后4位
SELECT mask_last_n('13812345678', 4);
+-------------------------------+
| mask_last_n('13812345678', 4) |
+-------------------------------+
| 1381234nnnn |
+-------------------------------+
- 混合字母数字特殊字符
SELECT mask_last_n('ABC-123-xyz', 7);
+--------------------------------+
| mask_last_n('ABC-123-xyz', 7) |
+--------------------------------+
| ABC-nnn-xxx |
+--------------------------------+
- UTF-8 字符处理(按字节脱敏)
SELECT mask_last_n('Helloṭṛ123', 9);
+--------------------------------+
| mask_last_n('Hello你好123', 9) |
+--------------------------------+
| Hello你好nnn |
+--------------------------------+
select mask_last_n('eeeéèêëìí1234');
+------------------------------------+
| mask_last_n('eeeéèêëìí1234') |
+------------------------------------+
| xxxéèêëìínnnn |
+------------------------------------+