oracleで特殊文字の削除を、正規表現で簡単にやる(REGEXP_REPLACE)

テキストデータを取り扱っていると、どうしても特殊文字が入ってくることがあるのですが、
文字だけ抜き出したい、という時に1つずつ置換するのは面倒(そして遅い)

というこことで、正規表現で削除するようにしてみました。

●元データ
select 'LF:' || chr(10) || ':CR:' || chr(13) || ':TAB:' || chr(9)||
'end' as dat from dual

●置換してみた
select REGEXP_REPLACE(dat, '[^[:print:]]', '') as text_dat
from (
select 'LF:' || chr(10) || ':CR:' || chr(13) || ':TAB:' || chr(9)||
'end' as dat from dual
)

●結果
LF::CR::TAB:end

[:print:]じゃないデータを全部空に置換しています。

CR、LF、TABなどがきれいさっぱりになります。
ちなみに半角スペースはテキストデータ扱いなので、この方法では除去できません。