- ベストアンサー
文字列の置換
電話番号のデータを文字列分、'#'で置換したいのですが、 update test set tel_no = replace(tel_no,tel_no,'#'); では、'#'一文字になってしまいます。 電話番号が10桁の場合、##########と置換するための OracleのSQLを教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 update test set tel_no = substr('##########',1,length(tel_no)); のほうがよいかも
その他の回答 (2)
- bin-chan
- ベストアンサー率33% (1403/4213)
回答No.2
update test set tel_no = '##########'; ではダメなのですか?
- yamada_g
- ベストアンサー率68% (258/374)
回答No.1
replaceではなくて、translate関数を使えばいいと思いますよ。 update test set tel_no = translate(tel_no, '0123456789', '##########'); http://docs.oracle.com/cd/E16338_01/server.112/b56299/functions216.htm#sthref1717 正規表現が使えるバージョンなら update test set tel_no = regexp_replace(tel_no, '\d', '#'); とかでも。 http://docs.oracle.com/cd/E16338_01/server.112/b56299/functions149.htm#sthref1440 こんなのもありますね。 update test set tel_no = lpad('#',length(tel_no),'#'); --rpadでも同じです 参考になれば幸いです。