メインコンテンツまでスキップ
に最終更新

MASK

説明​

MASK 関数は、機密情報を保護するためにデータをマスクします。デフォルトでは大文字を X、小文字を x、数字を n に変換します。

構文​

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

パラメータ​

パラメータ説明
<str>マスクする文字列。型: VARCHAR
<upper>大文字の置換に使用する文字。デフォルトは X(省略可)。型: VARCHAR
<lower>小文字の置換に使用する文字。デフォルトは x(省略可)。型: VARCHAR
<number>数字の置換に使用する文字。デフォルトは n(省略可)。型: VARCHAR

戻り値​

文字と数字を置換した文字列を VARCHAR 型で返します。

特殊なケース:

  • いずれかの引数が NULL の場合は、NULL を返します。
  • 英数字以外の文字は変更されません。
  • 置換文字を指定する引数に複数の文字が含まれる場合は、最初の文字だけを使用します。

例​

  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') |
+--------------------------------------+
| Axxx999 |
+--------------------------------------+
  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 |
+-----------------------------+