MASK_LAST_N
説明
MASK_LAST_N関数は、文字列の最後のNバイトをマスクするために使用されます。最後のNバイトにおいて、大文字をX、小文字をx、数字をnに置き換えます。
構文
MASK_LAST_N(<str>[, <n>])
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | マスクする文字列。型: VARCHAR |
<n> | マスクする末尾のNバイト数(オプション、デフォルトは文字列全体)。型: INT |
戻り値
VARCHAR型を返します。末尾のNバイトがマスクされた文字列です。
特殊なケース:
- いずれかのパラメータがNULLの場合、NULLを返します
- 英数字以外の文字は変更されません
<n>が文字列長より大きい場合、文字列全体をマスクします
例
- 基本的な使用法: 末尾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 |
+------------------------------------+