MySQLで個人情報をマスキングする方法(一文字残して*で埋める)

背景

本番環境のデータを検証環境で利用する際に、個人情報を適切にマスキングが必要になりました。

具体的には、名前などの個人情報を変換し、一部の文字を残して他は*で置き換える必要があります。

例
変換前 -> 変換後
鈴木一郎 -> 鈴***
山田太郎 -> 山***

データベースにはMySQL 5.7が使用されています。

解決方法

MySQLで特定の条件で文字列を変換するためには、SUBSTRINGやCONCATなどの文字列関数を利用します。

以下は、usersテーブルのname列に対して、一文字目を残し、残りの文字を*で埋めるSQLの例です。

UPDATE users
SET name = CONCAT(SUBSTRING(name, 1, 1), REPEAT('*', CHAR_LENGTH(name) - 1))

このクエリでは、SUBSTRING関数で文字列の最初の文字(一文字目)を抽出し、REPEAT関数で残りの文字を*で埋めます。
最終的にCONCAT関数でこれらを結合して、変換された名前を取得します。

最後に

プログラムでレコードを1つずつ取得し文字列を変換する方法もありますが、SQLを使用することで効率的に変換できました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください