跳到主要内容

MASK_FIRST_N

描述

MASK_FIRST_N 函数用于对字符串的前 N 个字节进行脱敏。将前 N 个字节中的大写字母替换为 X,小写字母替换为 x,数字替换为 n

语法

MASK_FIRST_N(<str>[, <n>])

参数

参数说明
<str>需要被脱敏的字符串。类型:VARCHAR
<n>需要脱敏的前 N 个字节数(可选,默认为整个字符串)。类型:INT

返回值

返回 VARCHAR 类型,为前 N 个字节被脱敏后的字符串。

<<<<<<< Updated upstream

  • 任意参数中有一个为 NULL,则返回 NULL
  • 非字母和数字会原样返回
  • 仅支持ASCII字母的替换,非ASCII字母(如带重音的拉丁字母)会原样保留 ======= 特殊情况:
  • 如果任意参数为 NULL,返回 NULL
  • 非字母和数字字符保持不变
  • 如果 <n> 大于字符串长度,脱敏整个字符串

Stashed changes

示例

  1. 基本用法:脱敏前4个字节
SELECT mask_first_n('1234-5678', 4);
+------------------------------+
| mask_first_n('1234-5678', 4) |
+------------------------------+
| nnnn-5678 |
+------------------------------+
  1. 不指定 n(脱敏整个字符串)
SELECT mask_first_n('abc123');
+-----------------------+
| mask_first_n('abc123') |
+-----------------------+
| xxxnnn |
+-----------------------+
  1. n 超过字符串长度
SELECT mask_first_n('Hello', 100);
+----------------------------+
| mask_first_n('Hello', 100) |
+----------------------------+
| Xxxxx |
+----------------------------+
  1. NULL 值处理
SELECT mask_first_n(NULL, 5);
+-----------------------+
| mask_first_n(NULL, 5) |
+-----------------------+
| NULL |
+-----------------------+
  1. n 为 0(不脱敏任何字符)
SELECT mask_first_n('Hello123', 0);
+-----------------------------+
| mask_first_n('Hello123', 0) |
+-----------------------------+
| Hello123 |
+-----------------------------+
  1. n 大于字符串长度(脱敏整个字符串)
SELECT mask_first_n('Test', 100);
+---------------------------+
| mask_first_n('Test', 100) |
+---------------------------+
| Xxxx |
+---------------------------+
  1. 脱敏邮箱地址前缀
SELECT mask_first_n('user@example.com', 6);
+-------------------------------------+
| mask_first_n('user@example.com', 6) |
+-------------------------------------+
| xxxx@xxample.com |
+-------------------------------------+
  1. 脱敏手机号前3位
SELECT mask_first_n('13812345678', 3);
+--------------------------------+
| mask_first_n('13812345678', 3) |
+--------------------------------+
| nnn12345678 |
+--------------------------------+
  1. 混合字母数字特殊字符
SELECT mask_first_n('Abc-123-XYZ', 7);
+---------------------------------+
| mask_first_n('Abc-123-XYZ', 7) |
+---------------------------------+
| Xxx-nnn-XYZ |
+---------------------------------+
  1. UTF-8 字符处理(按字节脱敏)
SELECT mask_first_n('ṭṛWorld123', 7);
+-----------------------------------+
| mask_first_n('ṭṛWorld123', 7) |
+-----------------------------------+
| ṭṛXorld123 |
+-----------------------------------+
select mask_first_n('eeeéèêëìí1234');
+-------------------------------------+
| mask_first_n('eeeéèêëìí1234') |
+-------------------------------------+
| xxxéèêëìínnnn |
+-------------------------------------+