Database JUNKY

MySQL,MariaDBを中心としたブログです

SQLで文字の一部分を置き換えて表示する方法

あくまでも例ですが・・

よくテストデータを作成する時に、

  • ドメインは残しておきたい
  • でも@より前のアカウントはマスキングしたい

なんていうリクエスト結構ないですかね?昔、ガラケーなのではあったのですが、今そんなにそんなリクエストないのかな? なんて思いつつ、ドメインは残しつつ、アカウントをマスクするSQLのサンプルを作ってみました。

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

【改訂第3版】 SQLポケットリファレンス (POCKET REFERENCE)

【改訂第3版】 SQLポケットリファレンス (POCKET REFERENCE)

  • サンプルSQL

あくまでもサンプルですw @MAILという変数を使ってやってみましたが、実際は、100万件とかあるデータでやるものなので、変数なんて使うことはありませんのでご安心ください

set @MAIL = 'hit@abc.def.com' ;

select
  replace(@MAIL,left(@MAIL,instr(@MAIL,'@')- 1),'秘密') as mail ;
  • 結果
+--------------------+
| mail               |
+--------------------+
| 秘密@abc.def.com   |
+--------------------+