检查表中因转换数字类型时出现 ORA-01722:invalid number 的方法

经常会把存放数字的字符型列转换为数字的情况,但是经常会出现 转换失败的情况,即出现ORA-01722:invalid number 错误;现在用一个函数来检测:

假设需要把第一列转换为数字型的列

select   column_name1 , column_name2 ...... from test  t

where  trim(translate(t.column_name1,'0123456789','          ')) is not null;

这样就把那些不能转换为数字型的行找了出来;在此摘录一下 translate函数的用法:

语法:TRANSLATE(char, from, to)

用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。

若from比to字符串长,那么在from中比to中多出的字符将会被删除。

三个参数中有一个是空,返回值也将是空值。

 

 

SQL> SELECT TRANSLATE('2KRW229',

  2    '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',

  3    '9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') AS "License"

  4    FROM DUAL;

 

License

-------

9XXX999

 

某些情况下,要从一个字符串中,提取数字信息的,可以使用:

SQL> SELECT TRANSLATE('2KRW229',

  2    '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789')

  3    AS "Translate example"

  4    FROM DUAL;

 

Tran

----

2229

 

 

你可能感兴趣的:(检查表中因转换数字类型时出现 ORA-01722:invalid number 的方法)