1

タイプvarchar2のdiscountという名前の列があります。10 進数と整数が含まれています。数値型に変換したい。だから私はこのクエリを使用しました

update table_name set newdiscount=to_number(discount)

「有効な番号ではありません」というエラーが表示されます。ここで、新しいディスカウントのタイプは number です。

コンマがあるかどうかを確認しましたが、ありません。もちろん、数字以外の値をチェックするクエリ テストの結果に表示される小数点を含む行が多数あります。

SELECT discount FROM table_name  WHERE REGEXP_LIKE(discount, '[^[:digit:]]');

割引値を型番号の newdiscount 列にコピーする方法は?

4

2 に答える 2

0

これらの検証のみを更新して、次のような数値にすることができます。

update table_name
set new_discount = CASE WHEN regexp_like(discount, '^[+-]?([0-9]*\.?[0-9]+|[0-9]+\.?[0-9]*)([eE][+-]?[0-9]+)?$') THEN to_number(discount) ELSE -99999 END
于 2013-06-18T07:42:29.683 に答える