>데이터 베이스 >MySQL 튜토리얼 >Oracle-ORA-01722 invalid number 错误

Oracle-ORA-01722 invalid number 错误

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB원래의
2016-06-07 16:59:401661검색

忽然有一天,好好的系统报错:ORA-01722 invalid number环境:Oracle9 + JDBC访问数据库,之前是好的,忽然发现这个错误后来才知

忽然有一天,好好的系统报错:ORA-01722 invalid number

环境:Oracle9 + JDBC访问数据库,之前是好的,忽然发现这个错误

后来才知道缘由

1. 代码里面执行了如下SQL语句:

select mdn from tablename where mdn=13800000000

tablename表里面的mdn字段是varchar2()类型字段,,由于Oracle的字段类型隐式转换功能

上面的SQL语句通常是可行的,查询的时候oracle解析该条件时,会首先to_number(mdn)   再和where mdn=13812345678进行比较判断,如果能够确保mdn字段里面存放的全为数字那么这个语句是一直不会报错的(可能存在效率问题),但偏偏有人误操作在mdn里面加入了几个字母133aa000000,如果还是上面的语句,并且表里面没有13800000000这个用户的数据, 当查询扫描到133aa000000时to_number(mdn)报错ORA-01722 invalid number

2. 因此写SQL语句的时候最好还是规规矩矩的写:

select mdn from tablename where mdn='13800000000'

什么问题都没有!

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.