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

MASK_FIRST_N

説明​

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

構文​

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

パラメータ​

パラメータ説明
<str>マスクする文字列。型: VARCHAR
<n>先頭からマスクするバイト数(省略可能。省略すると文字列全体をマスクします)。型: INT

戻り値​

先頭 N バイトをマスクした文字列を VARCHAR 型で返します。

特記事項:

  • いずれかのパラメータが NULL の場合は NULL を返します。
  • 英数字以外の文字は変更されません。
  • <n> が文字列の長さを超える場合は、文字列全体をマスクします。

例​

  1. 基本的な使い方: 先頭 4 バイトをマスク
SELECT mask_first_n('1234-5678', 4);
+------------------------------+
| mask_first_n('1234-5678', 4) |
+------------------------------+
| nnnn-5678 |
+------------------------------+
  1. n を指定しない場合(文字列全体をマスク)
SELECT mask_first_n('abc123');
+-----------------------+
| mask_first_n('abc123') |
+-----------------------+
| xxxnnn |
+-----------------------+
  1. n が文字列の長さを超える場合
SELECT mask_first_n('Hello', 100);
+----------------------------+
| mask_first_n('Hello', 100) |
+----------------------------+
| Xxxxx |
+----------------------------+
  1. NULL 値の扱い
SELECT mask_first_n(NULL, 5);
+-----------------------+
| mask_first_n(NULL, 5) |
+-----------------------+
| NULL |
+-----------------------+
  1. n が 0 の場合(文字をマスクしない)
SELECT mask_first_n('Hello123', 0);
+-----------------------------+
| mask_first_n('Hello123', 0) |
+-----------------------------+
| Hello123 |
+-----------------------------+
  1. n が文字列の長さを超える場合(文字列全体をマスク)
SELECT mask_first_n('Test', 100);
+---------------------------+
| mask_first_n('Test', 100) |
+---------------------------+
| Xxxx |
+---------------------------+
  1. メールアドレスの先頭部分をマスク
SELECT mask_first_n('user@example.com', 6);
+-------------------------------------+
| mask_first_n('user@example.com', 6) |
+-------------------------------------+
| xxxx@xxample.com |
+-------------------------------------+
  1. 電話番号の先頭 3 桁をマスク
SELECT mask_first_n('13812345678', 3);
+--------------------------------+
| mask_first_n('13812345678', 3) |
+--------------------------------+
| nnn12345678 |
+--------------------------------+
  1. 文字、数字、特殊文字が混在する場合
SELECT mask_first_n('Abc-123-XYZ', 7);
+---------------------------------+
| mask_first_n('Abc-123-XYZ', 7) |
+---------------------------------+
| Xxx-nnn-XYZ |
+---------------------------------+
  1. UTF-8 文字の扱い(バイト単位でマスク)
SELECT mask_first_n('ṭṛWorld123', 7);
+-----------------------------------+
| mask_first_n('ṭṛWorld123', 7) |
+-----------------------------------+
| ṭṛXorld123 |
+-----------------------------------+
SELECT mask_first_n('eeeéèêëìí1234');
+-------------------------------------+
| mask_first_n('eeeéèêëìí1234') |
+-------------------------------------+
| xxxéèêëìínnnn |
+-------------------------------------+