データ型varcharのデータベースと列(y)にテーブル(x)があります。この列には、1.、2 \、.5,2]、4.3などの値が含まれています。Oracleのvarchar文字列の置換
ドットの後に値を持つもの以外の特殊文字を持つ列のすべての値を置き換えようとしています。
例:2.3,4.5,7.1のような値を置き換えたくありません。
ドットの後に値がない場合や、ドットで始まる値がドットをnullに置き換えたい場合は、
例:2. 1と交換する必要があります
- 1.、2。
- 0.1、0.2は、同様に1、2と交換する必要があります。
助けてください私は、スクリプトの下にしようとしたが、それは
update <table_name>
set <column_name> = regexp_replace(regexp_replace(column_name, '[^A-Z0-9 ]', '.'),
' {2,}', ' ')
/
を動作しませんでした。
私はOracle 11g DBを使用しています。
私は理解できません...あなたが表示する文字列、 '1。 、2 \、.5,2]、4.3'は単一の入力文字列です(単一の行にあります)?結果はコンマで区切られた数値のリストでなければなりません。整数か小数のどちらかですか?そして、私はなぜあなたが '23'を' 23'に置き換えたいのか理解しています。しかし、なぜ '.2'を' 0.2'ではなく '' 2''に置き換えたいのですか?多くの国では '.2'が' 0.2'の共通の変種であることをご存知ですか?あなたが言ったように**本当に** .2を2に置き換えたいとしていることを確認してください。あなたは問題のステートメントを変更するために戻ってこないでしょう。 – mathguy
小数点以外のすべての特殊文字をコンマで区切ります。文字列に文字列が存在することはありますか?そうであれば、どのように扱う必要がありますか?次に、入力文字列に '....、32.9.2、....'のようなものがあればどうしますか? (2小数点以下は?)記号については、 '2。 、30 $、+ 12.5、-42.23?それらをどのように処理する必要がありますか? – mathguy
@mathguy文字列がSINGLE入力文字列ではありません。私が言及した各文字列は、新しい値が連続しています。私が.2を0.2でなく2で置き換えることを試みているのは、実際の値が2である理由です。いくつかの値のデータ移行中に、数値の前にドットが追加されています。はい、すべての特殊文字を削除します。文字列には文字はありません。私は2つの小数点文字列を持っていません。 +、 - 、$記号もヌル値に置き換えてください。 –