【SQL】SQLでマスキングを実装

■ はじめに

SQLで個人情報保護のためのマスキングを実装する
可能性がでてきたので、予習。

なお、実行環境は、PostgreSQL。

目次

【1】電話番号をマスキング
【2】Emailをマスキング

【1】電話番号をマスキング

-- 出力結果:01-2345-****
SELECT
  RPAD(SUBSTRING('01-2345-6789', 1, 8), LENGTH('01-2345-6789'), '*')
;

-- <メモ>
-- SUBSTRING('01-2345-6789', 1, 8) => '01-2345-'
-- LENGTH('01-2345-6789') => 12
-- で、残りをRPADで「*」で埋める

※補足:使用した文字列関数

* 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2022/10/01/000000

【2】Emailをマスキング

-- 『【1】電話番号をマスキング』の応用でできる
-- *********@gmail.com
select LPAD(substring('test-test@gmail.com', strpos('test-test@gmail.com','@'), length('test-test@gmail.com')), LENGTH('test-test@gmail.com'), '*')

Snowflake

-- strpos => charindex
select LPAD(substring('test-test@gmail.com', charindex('@', 'test-test@gmail.com'), length('test-test@gmail.com')), LENGTH('test-test@gmail.com'), '*')

https://docs.snowflake.com/ja/sql-reference/functions/charindex.html

参考文献
https://hit.hateblo.jp/entry/2016/04/30/020149

関連記事

Snowflake ~ 文字列操作関連 ~
https://dk521123.hatenablog.com/entry/2022/10/01/000000
Snowflake ~ Dynamic masking ~
https://dk521123.hatenablog.com/entry/2022/10/07/102337