3

シナリオ: ユーザーが入力するフィールドを返す関数を呼び出しています。フィールドは通常、「120000」のような数値を返し、to_char を使用して「120,000」に変換します。

問題: 一部のユーザーが「120,000」などの値を入力すると、to_char を使用しようとするとエラーが発生します。また、値が見つからない場合、関数はスペース ' ' を返します。以前に to_number で何かを試しましたが、「 」に問題があると思います。

質問: この問題を処理する最善の方法は何ですか? 「、」をチェックするケースステートメント?to_number を使用してから to_char を使用しますか?

注: 私は一緒に解決策をハックすることができます。これを処理する最善の方法は何かと思っています。

4

1 に答える 1

7

REPLACE を使用するよりも、より強力なREGEXP_REPLACE関数を使用する必要があります。 http://www.orafaq.com/wiki/REGEXP_REPLACE

次に、文字列から数値以外の文字を削除してから、好きなようにフォーマットすることができます。

あなたの場合、それは次のようになります:

REGEXP_REPLACE(<your field>, '[^0-9]+', '');

これにより、すべての非数値文字が null に置き換えられ、文字列から効果的に削除されます。

この回答も参照してください: Oracle: 文字列内の数値以外の文字を置き換える

于 2012-01-30T22:05:34.997 に答える