跳到主要内容

MASK

描述

MASK 函数用于对数据进行屏蔽以保护敏感信息。默认行为是将大写字母转换为 X,小写字母转换为 x,数字转换为 n

语法

MASK(<str>[, <upper>[, <lower>[, <number>]]])

参数

参数说明
<str>需要被脱敏的字符串。类型:VARCHAR
<upper>替换大写字母的字符,默认为 X(可选)。类型:VARCHAR
<lower>替换小写字母的字符,默认为 x(可选)。类型:VARCHAR
<number>替换数字的字符,默认为 n(可选)。类型:VARCHAR

返回值

返回 VARCHAR 类型,为字母和数字被替换后的字符串。

<<<<<<< Updated upstream

  • 任意参数中有一个为 NULL,则返回 NULL
  • 非字母和数字会原样返回
  • 仅支持ASCII字母的替换,非ASCII字母(如带重音的拉丁字母)会原样保留 ======= 特殊情况:
  • 如果任意参数为 NULL,返回 NULL
  • 非字母和数字字符保持不变
  • 替换字符参数如果包含多个字符,只取第一个字符

Stashed changes

示例

  1. 基本用法:默认替换规则
SELECT mask('abc123XYZ');
+-------------------+
| mask('abc123XYZ') |
+-------------------+
| xxxnnnXXX |
+-------------------+
  1. 自定义替换字符
SELECT mask('abc123XYZ', '*', '#', '$');
+----------------------------------+
| mask('abc123XYZ', '*', '#', '$') |
+----------------------------------+
| ###$$$*** |
+----------------------------------+
  1. 特殊字符保持不变
SELECT mask('Hello-123!');
+--------------------+
| mask('Hello-123!') |
+--------------------+
| Xxxxx-nnn! |
+--------------------+
  1. NULL 值处理
SELECT mask(NULL);
+------------+
| mask(NULL) |
+------------+
| NULL |
+------------+
  1. 仅包含数字的字符串
SELECT mask('1234567890');
+--------------------+
| mask('1234567890') |
+--------------------+
| nnnnnnnnnn |
+--------------------+
  1. 仅包含字母的字符串
SELECT mask('AbCdEfGh');
+------------------+
| mask('AbCdEfGh') |
+------------------+
| XxXxXxXx |
+------------------+
  1. 空字符串处理
SELECT mask('');
+----------+
| mask('') |
+----------+
| |
+----------+
  1. 使用单字符替换符(多字符时取第一个)
SELECT mask('Test123', 'ABC', 'xyz', '999');
+--------------------------------------+
| mask('Test123', 'ABC', 'xyz', '999') |
+--------------------------------------+
| Xxxx999 |
+--------------------------------------+
  1. 脱敏信用卡号
SELECT mask('1234-5678-9012-3456');
+-----------------------------+
| mask('1234-5678-9012-3456') |
+-----------------------------+
| nnnn-nnnn-nnnn-nnnn |
+-----------------------------+
  1. 脱敏邮箱地址
SELECT mask('user@example.com');
+--------------------------+
| mask('user@example.com') |
+--------------------------+
| xxxx@xxxxxxx.xxx |
+--------------------------+
select mask('eeeéèêëìí1234');
+-----------------------------+
| mask('eeeéèêëìí1234') |
+-----------------------------+
| xxxéèêëìínnnn |
+-----------------------------+