ORA-01722:无效数字

今天写查询语句,关联多张表,出现了这个错误。

结果发现时字段的数据类型不一致。

select * from table_a a,table_b b
where to_char(a.project_id)=b.project_id(+) --把project_id的类型转换成字符串类型,使其保持一致。

1.关联时转换一下数据类型;

2.或者修改表中的字段。

附录:

1、TO_CHAR() 本函数又可以分三小类,分别是
 ①转换字符->字符TO_CHAR(c):将nchar,nvarchar2,clob,nclob类型转换为char类型; 
select TO_CHAR(‘AABBCC‘) from DUAL;
 ②转换时间->字符TO_CHAR(d[,fmt]):将指定的时间(data,timestamp,timestamp with time zone)按照指定格式转换为varchar2类型; 
select TO_CHAR(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) from DUAL;
 ③转换数值->字符TO_CHAR(n[,fmt]):将指定数值n按照指定格式fmt转换为varchar2类型并返回; 
select TO_CHAR(-100, ‘L99G999D99MI‘) from DUAL;
select to_char(123456) from DUAL; 
2、TO_NUMBER(c[,fmt[,nls]]) 将char,nchar,varchar2,nvarchar2型字串按照fmt中指定格式转换为数值类型并返回。 
select TO_NUMBER(‘-100.00‘, ‘9G999D99‘) from DUAL;
select to_number(‘123456‘) from DUAL;

ok。

时间: 2024-08-02 02:51:07

ORA-01722:无效数字的相关文章

讨厌麻烦的ora 01722无效数字

webservice开发过程中,数据库由原来的oracle改为现在的sql server.然后重新调试,结果报出ora 01722无效数字的错误. 由于连接oracle数据库的时候并没有问题,所以一开始我以为是数据库不同,导致部分数据类型差异,(但又觉得有点离谱,切换数据库,不至于会导致这种错误吧) 经过排查,总结得出如下: 1.对于两个类型不匹配(一个数字类型,一个非数字类型,同下)的值进行赋值操作;2.两个类型不匹配的值进行比较操作(例如,"=");3.to_number函数中的值

plsql里面执行正常,java运行报ORA-01722: 无效数字

贴代码: <select id="getInfo" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">      <isEqual property="Type" compareValue="02">        select a.*       from INFO a      where a.T

Oracle ORA-01722: 无效数字 处理方法

C# + Oralce 10G 项目中 有用参数处理Update语句.参数命名和表字段同名.执行报错: ORA-01722: 无效数字 后修改所有的参数和对应字段不同.解决. 修改前: StringBuilder strSql = new StringBuilder();object returnOValue = null;strSql.Append("update CRM_CONTACTS_RESOURCE set ");strSql.Append("RESOURCE_NA

“无效数字” ;java.lang.Integer cannot be cast to java.lang.String

今天页面上突然查询不出数据,大致的sql语句是 select xx ,xxx from table a where a.lrmb in ( 6101060033, 61010503300, 61016666645 ) order by xxx desc 报错信息是"无效数字",很快就发现是lrbm这个字段里面的数字上没有引号,而之前一直是可以查询出数据的,所以很可能是数据库里面有人人工的添加了一条数据,这条数据的lrbm字段的类型有错,待会儿在自己本地 数据库里面测试一条错误哦数据测试

Oracle 参数化更新数据时报错:Oracle ORA-01722: 无效数字

报错:Oracle ORA-01722: 无效数字 看了一篇博客,据说是参数与列名不能一致,改过之后还是报一样的错误:Oracle ORA-01722: 无效数字 ,后来试了一下,不是参数名必须不一样的原因. 然后把参数的语句变换了一些,按照参数的正确顺序排好之后,一切正常.

PL/SQL那点事--&gt;SqlSession operation; SQL []; ORA-01722: 无效数字

PL/SQL那点事-->SqlSession operation;SQL []; ORA-01722: 无效数字 出现这种情况,在网上查了很多方法:大致主要有两种方法帮助我们解决这个问题: 1.将错误行代码找出来,看是不是字符串转化为数字的时候报错,如果是在action层报错,就需要Integer.parseInt(String str)API来解决该问题 如果在action层没有报错,而是显示是Mapper.xml文件报错,那就是和数据库里面的数据类型不一致,这时候就需要to_number(从

遇到的一个ORA-01722,无效数字的问题

错误现象如上图, 当dataowner=990的时候,SQL执行正常,当dataowner=991的时候,SQL执行报错,ORA-01722,无效数字 首先,我认为代码是不应该出现偶然性.随机性这种概念,但是我没有考虑到原始数据这个因素 问题出在timestr这个字段上,这是一个char类型的字段 我在编码SQL的时候,使用了char=1这样的谓词 我凭借自己的经验得到如下结论: Oracle是在比较数据时,存在隐式转换的机制 "When comparing a character value

ORACLE-023:令人烦恼的 ora-01722 无效数字

曾经一段时间内写sql语句时,老是莫名其妙的报ora-01722.对于这个错误提示,尤其是对于一个复杂的sql语句,很是郁闷,因为很多时候都不知所然.通过每次碰到的总结,其实也不是那么难以解决的,主要原因是:1.对于两个类型不匹配(一个数字类型,一个非数字类型,同下)的值进行赋值操作;2.两个类型不匹配的值进行比较操作(例如,"=");3.to_number函数中的值,非数字的,比如,to_number('a')肯定是不行的,to_number('12306')则是正常的. 要避免这些

SQL查出异常数据(ORA-01722: 无效数字)

-- Created on 2015/4/29 by MENGHU DECLARE -- Local variables here I INTEGER; BEGIN FOR OPEN_DATA IN (SELECT * FROM SYS_DEPT_ACCOUNTING SDA WHERE SDA.SEGMENT4 IS NOT NULL) LOOP BEGIN BEGIN SELECT TO_NUMBER(TRIM(SDA.SEGMENT4)) INTO I FROM SYS_DEPT_ACCO