2012-01-30 11 views
3

シナリオ:ユーザーが入力するフィールドを返す関数を呼び出しています。このフィールドは通常 '120000'のような数値を返します。次に、to_charを使用して ' 120,000 '。Oracle To_Char関数すでに文字列である場合の処理​​方法

問題:「120,000」などの値を入力するユーザーがいますが、to_charを使用しようとするとエラーが表示されます。また、値が見つからなければ、関数は空白を返します。私は早くto_numberで何かを試してみました。

質問:この問題を処理するにはどうすればよいでしょうか? '、'のケースステートメントチェック? to_numberを使用してto_charを使用しますか?

注:私は一緒にソリューションをハックすることができます私はちょうどこれを処理するための最善の方法が不思議です。

+0

ストリップアウトして、上記のように 'to_char'を使用します。

もこの答えを参照してください。どちらかというと、数字だけを入力するようにユーザーに指示します。 –

+2

最も良い方法は、ユーザーがカンマで数字を入力しないようにすることです。 –

+2

私はユーザーにフォーマット番号(120,000)ではなく数字を入力させることになりますが、 。また、いくつかの場所を使用します。代わりにカンマを除いても常に機能するわけではありません。 – tbone

答えて

7

REPLACEを使用するのではなく、より強力なREGEXP_REPLACE機能を使用する必要があります。 http://www.orafaq.com/wiki/REGEXP_REPLACE

文字列から数値以外の文字を削除してから、好きなようにフォーマットすることができます。これは、nullが効果的に文字列から削除すると、すべての数字以外の文字を置き換え

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

あなたのケースでは、それはようなものになるだろう。コンマ Oracle: Replacing non-numeric chars in a string

+0

将来、回答の「リンク」が壊れている場合はどうなりますか?私はあなたが私の以前の答えをトロールするように見えたので、私は[ここ]から引用しています(http://stackoverflow.com/questions/12060917/using-nested-tables-in-java/12061531#comment16109755_12061531) – Annjawn

+0

@Annjawnリンクを含んでいるものは、意図していなかった方法であなたがリンクしてきた答えから私のコメントを取ったとしか思えません。それはあなたを犯すようには設計されていませんでした。 FWIW、私は、たとえ情報とリンクの両方が含まれているので、リンクが壊れたとしても、この答えは立っていると思います。あなたは同意しませんか? – Ollie

+0

です。しかし、リンクが壊れる可能性があります。何の理由もなく、いつでも。しかし、それは私たちがそれらの使用をやめることを意味しません。 – Annjawn

関連する問題