VARCHAR2型のカラムに半角数字や全角の日本語が入っています。
このカラムから半角数字のみのデータのみ抜き出し、大小の比較を行いたいのですが数値変換がうまくいきません。
最初は単純に、
select TO_NUMBER(COL_A)
from table_a
と実行したところ、「ORA-01722 数値が無効です。」とエラーになりました。
そこで以下のように半角数字のデータのみを抜き出してから変換したところ、
「ORA-01426 数値オーバーフローが発生しました 」とエラーになりました。
select TO_NUMBER(COL_A)
from (
select COL_A
from table_a A
where NOT(REGEXP_LIKE(A.COL_A, '[^0-9]')
)
そこで今度は、以下のようにFUNCTIONを作成し
例外が発生しない場合のみTO_NUMBERを行うようにしたのですが
「数値オーバーフローです。 」とエラーになりました。
CREATE OR REPLACE FUNCTION TEST_FUNC(SOURCE IN VARCHAR2) RETURN NUMBER AS
BEGIN
RETURN TO_NUMBER(SOURCE);
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END;
select TEST_FUNC(COL_A) from table_a
→数値オーバーフローです。
これ以外に思い当たるアイデアがないのですが何かいい方法はないでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/03 09:13