select '11dd$%example@sqldat.com
' 入力として、regexp_replace('11dd$%example@sqldat.com
', '[^[:alnum:]]') as outputfrom dual;INPUT OUTPUT ------------ --------11dd$%example@sqldat.com
11dde11hコード> プレ>
[:alnum:] すべての文字 (標準の ASCII 文字、小文字と大文字) およびすべての数字の短縮形です。 [^ ... ]コード> ... を除くすべてを意味します .したがって、これは文字と数字を除くすべてを...何も置き換えません (REGEXP_REPLACE に 3 番目の引数を与えていないため)。
編集 :OP が質問に 2 番目の部分を追加しました。
割り当てがすべての英数字のみを削除し、他のすべてを保持することである場合は、単純に ^ を削除します 正規表現から。
select '11dd$%example@sqldat.com
' 入力として、regexp_replace('11dd$%example@sqldat.com
', '[[:alnum:]]') as outputfrom dual;INPUT OUTPUT------------ ------11dd$%example@sqldat.com
$%example@sqldat.com
プレ>