MASK
説明
MASK関数は、機密情報を保護するためにデータをマスクするために使用されます。デフォルトの動作では、大文字をXに、小文字をxに、数字をnに変換します。
構文
MASK(<str>[, <upper>[, <lower>[, <number>]]])
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | マスクする文字列。型: VARCHAR |
<upper> | 大文字を置き換える文字、デフォルトは X(オプション)。型: VARCHAR |
<lower> | 小文字を置き換える文字、デフォルトは x(オプション)。型: VARCHAR |
<number> | 数字を置き換える文字、デフォルトは n(オプション)。型: VARCHAR |
戻り値
VARCHAR型を返し、文字と数字が置き換えられた文字列。
特殊なケース:
- いずれかのパラメータがNULLの場合、NULLを返す
- 英数字以外の文字は変更されない
- 置換文字パラメータに複数文字が含まれる場合、最初の文字のみが使用される
例
- 基本的な使用法: デフォルトの置換ルール
SELECT mask('abc123XYZ');
+-------------------+
| mask('abc123XYZ') |
+-------------------+
| xxxnnnXXX |
+-------------------+
- カスタム置換文字
SELECT mask('abc123XYZ', '*', '#', '$');
+----------------------------------+
| mask('abc123XYZ', '*', '#', '$') |
+----------------------------------+
| ###$$$*** |
+----------------------------------+
- 特殊文字は変更されません
SELECT mask('Hello-123!');
+--------------------+
| mask('Hello-123!') |
+--------------------+
| Xxxxx-nnn! |
+--------------------+
- NULL値の処理
SELECT mask(NULL);
+------------+
| mask(NULL) |
+------------+
| NULL |
+------------+
- 数字のみの文字列
SELECT mask('1234567890');
+--------------------+
| mask('1234567890') |
+--------------------+
| nnnnnnnnnn |
+--------------------+
- 文字のみの文字列
SELECT mask('AbCdEfGh');
+------------------+
| mask('AbCdEfGh') |
+------------------+
| XxXxXxXx |
+------------------+
- 空文字列の処理
SELECT mask('');
+----------+
| mask('') |
+----------+
| |
+----------+
- 単一文字置換(複数から最初の文字を取得)
SELECT mask('Test123', 'ABC', 'xyz', '999');
+--------------------------------------+
| mask('Test123', 'ABC', 'xyz', '999') |
+--------------------------------------+
| Xxxx999 |
+--------------------------------------+
- クレジットカード番号をマスクする
SELECT mask('1234-5678-9012-3456');
+-----------------------------+
| mask('1234-5678-9012-3456') |
+-----------------------------+
| nnnn-nnnn-nnnn-nnnn |
+-----------------------------+
- メールアドレスをマスクする
SELECT mask('user@example.com');
+--------------------------+
| mask('user@example.com') |
+--------------------------+
| xxxx@xxxxxxx.xxx |
+--------------------------+
SELECT mask('eeeéèêëìí1234');
+-----------------------------+
| mask('eeeéèêëìí1234') |
+-----------------------------+
| xxxéèêëìínnnn |
+-----------------------------+