kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

MySQLでマスク

マスクかけてデータを扱いたいことがありました。
update文でマスクかけるやり方です。

ドメインだけ残して、後は固定文字列とかカラムだけ使う方法

idはtable_nameにある連番のカラムです。

update table_name set
email =  concat(id,'-foo-',SUBSTRING_INDEX(email, '@', -1))

元のアドレスからハッシュ化したりする方法

ドメインを残し、元のアドレスのアカウント部分を暗号化して
それぞれの値を固有にする方法です。
メールアドレス同士でテーブルをJOINしたりするときにこのほうが便利でした。
MD5sha1にしたほがよいかもしれません。

update table_name set
email =  concat(MD5(SUBSTRING_INDEX(email, '@', 1)),'@',SUBSTRING_INDEX(email, '@', -1))