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

MASK_LAST_N

説明​

MASK_LAST_N 関数は文字列の末尾 N バイトをマスクします。末尾 N バイトに含まれる大文字を X、小文字を x、数字を n に置き換えます。

構文​

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

引数​

引数説明
<str>マスクする文字列。型: VARCHAR
<n>末尾からマスクするバイト数(省略可能。省略時は文字列全体をマスク)。型: INT

戻り値​

VARCHAR 型の値を返します。返される文字列では、末尾 N バイトがマスクされています。

特殊なケース:

  • いずれかの引数が NULL の場合、NULL を返します
  • 英数字以外の文字は変更されません
  • <n> が文字列の長さより大きい場合、文字列全体をマスクします

使用例​

  1. 基本的な使い方: 末尾 4 バイトをマスク
SELECT mask_last_n('1234-5678', 4);
+-----------------------------+
| mask_last_n('1234-5678', 4) |
+-----------------------------+
| 1234-nnnn |
+-----------------------------+
  1. n を指定しない場合(文字列全体をマスク)
SELECT mask_last_n('abc123');
+----------------------+
| mask_last_n('abc123') |
+----------------------+
| xxxnnn |
+----------------------+
  1. n が文字列の長さを超える場合
SELECT mask_last_n('Hello', 100);
+---------------------------+
| mask_last_n('Hello', 100) |
+---------------------------+
| Xxxxx |
+---------------------------+
  1. NULL 値の扱い
SELECT mask_last_n(NULL, 5);
+----------------------+
| mask_last_n(NULL, 5) |
+----------------------+
| NULL |
+----------------------+
  1. n が 0 の場合(文字はマスクされない)
SELECT mask_last_n('Hello123', 0);
+----------------------------+
| mask_last_n('Hello123', 0) |
+----------------------------+
| Hello123 |
+----------------------------+
  1. n が文字列の長さを超える場合(文字列全体をマスク)
SELECT mask_last_n('Test', 100);
+--------------------------+
| mask_last_n('Test', 100) |
+--------------------------+
| Xxxx |
+--------------------------+
  1. メールアドレスのドメイン部分をマスク
SELECT mask_last_n('user@example.com', 11);
+-------------------------------------+
| mask_last_n('user@example.com', 11) |
+-------------------------------------+
| user@xxxxxxx.xxx |
+-------------------------------------+
  1. 電話番号の末尾 4 桁をマスク
SELECT mask_last_n('13812345678', 4);
+-------------------------------+
| mask_last_n('13812345678', 4) |
+-------------------------------+
| 1381234nnnn |
+-------------------------------+
  1. 英字、数字、特殊文字が混在する場合
SELECT mask_last_n('ABC-123-xyz', 7);
+--------------------------------+
| mask_last_n('ABC-123-xyz', 7) |
+--------------------------------+
| ABC-nnn-xxx |
+--------------------------------+
  1. 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 |
+------------------------------------+