0

文字列が数値かどうかをチェックするこの特定の関数は、 1.00 を渡すと例外をスローします。

create or replace function my_to_number( p_num in 
varchar2 ) return number
   as
      x number;
       num_val_error exception;
       pragma exception_init( num_val_error, -6502 );
 begin
       x := to_number( p_num );
         return 1;
  exception
         when num_val_error then 
         return 0;
  end my_to_number;

1.00 は完全に有効な数値です。右?

4

1 に答える 1

1

TO_NUMBERは最大 3 つのパラメーターを取り、1 つ目は変換する式、2 つ目は使用する数値形式、3 つ目は小数点とグループの区切り記号を定義します。最初の 1 つだけが必要です。3 番目のnlsparam要素がない場合、Oracle はセッションにデフォルトを使用します。ロケールのデフォルトの小数点記号は「,」のようです。

試すTO_NUMBER(p_num, '9G999D99', 'NLS_NUMERIC_CHARACTERS = ''.,''')

于 2012-08-22T01:46:05.543 に答える