• ベストアンサー

文字列の置換

電話番号のデータを文字列分、'#'で置換したいのですが、 update test set tel_no = replace(tel_no,tel_no,'#'); では、'#'一文字になってしまいます。 電話番号が10桁の場合、##########と置換するための OracleのSQLを教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.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でも同じです 参考になれば幸いです。

関連するQ&A