Oracleでカラムのデータをほぼ同じ文字数の文字で置換する方法

つまりどういうことだってばよ!!!って言われそうですが。 噛み砕いていうと「山田太郎」というデータを「ああああ」と置換する方法です。 個人名などの個人情報が入ったデータをupdateでマスキングする際に利用できます。

Oracleのlpad関数length関数を利用すればサクッとできます。

つまりlength関数で該当のデータの文字数をカウントして、その文字数分、lpad関数で『あ』といった適当な文字で文字埋めします。

例として下記のようなSQLで置換できます。

UPDATE
    MEIBO
SET
    nm_kanji = lpad(' ',length(nm_kanji)*2,'あ'),
    nm_romaji = lpad(' ',length(nm_romaji),'a');

*2 としているのは、lpad関数で全角文字を利用するとバイト数に換算されて埋められてしまうからです。つまり「山田太郎(4文字)」の場合、 lpad(‘ ‘,length(‘山田太郎’),’あ’) とすると4バイトとされてしまい2文字の ああ となってしまいます。

「ほぼ同じ文字数」という逃げを使っているのはこういうことです。

コメントを残す

メールアドレスが公開されることはありません。