ora-01722:invalid number
来源:互联网 发布:floyd算法求最短路径 编辑:程序博客网 时间:2024/05/16 02:20
今天在把一个字段转换成number时用了to_number(字段)函数,可一直报ora-01722:invalid number 这个错误,于是想把导致这个错误的字段找出来,首先用了排除法,把那些能转换的排除掉:
1.select to_number(col_name) from table_name WHERE regexp_like(l11,'(^[0-9]+$|^[0-9]+[.][0-9]+$)');
上面用了正则表达式,^表示字符的开始,$表示字符的结尾,[0-9]表示由数字0到9组成,+表示匹配前面的子表达式一次或多次,|表示或的意思,[.]表示字符点“."。
通过上面的表达式,首先排除了数字开头数字结束或数字开头中间带点数字结束的字符串,这些字符都能通过to_number函数的转换并不报错,那么,报错的记录就在剩下的记录里面。
select to_number(' ') from dual;--报错
select to_number('2 ') from dual;--不报错
select to_number(' 2 ') from dual;--不报错
select to_number(null) from dual;--不报错
select to_number(' 23.') from dual;--不报错
select to_number(' .2 ') from dual;--不报错
通过上面的实验,单独转换空格报错,但数字前后带空格转换不报错,null 不报错;数字前后带点都不报错。
后来我又通过replace 函数过虑了一些其他特殊字符:
select to_number(replace(col_name,chr(10),'')) from table_name;
10 LF (NL line feed, new line) 换行键
13 CR (carriage return) 回车键
32 space 空格
到最后,原来那个导致问题的是tab键,这个字符的ASCII是9,于是
select to_number(replace(col_name,chr(9),'')) from table_name; 就没报错了。
在此记录一下!
- ORA-01722 Invalid Number
- ORA-01722 Invalid Number
- ORA-01722: invalid number
- ORA-01722 invalid number
- ora-01722:invalid number
- ORA-01722: invalid number
- ORA-01722:invalid number
- ORA-01722: invalid number
- Oracle-ORA-01722 invalid number错误
- ORA-01722: invalid number" During Upgrade/Downgrade
- Oracle-ORA-01722 invalid number 错误
- ORA-01722 invalid number错误原理解
- Oracle-ORA-01722 invalid number错误
- Oracle-ORA-01722 invalid number错误
- ORA-01722 invalid number错误
- ORA-01722: invalid number 一例
- java.sql.SQLSyntaxErrorException: ORA-01722: invalid number
- ORA-01465: invalid hex number
- 二维数组内存图2
- NYOJ 23 取石子(一)
- Default Locator (Receiving or Shipping) Setup
- string str = null 与 string str = “” ,string str=string.Empty
- 湖南一少女患结肠癌引关注 专家提醒嗜食麻辣烫要当心
- ora-01722:invalid number
- 嵌入式 获取网卡设备以及IP和MAC地址示例以及网络编程之ioctl小结
- 日常记录
- Android之ListView的优化
- 网易人事架构调整 总编李甬全面掌管内容和销售
- ref和out的区别
- Hu不变矩原理及opencv实现
- override与重载(overload)的区别
- 黑马程序员_学习笔记:14) Properties、PrintStream、SequenceInputStream:序列流、RandomAccessFile、管