欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库报“ORA-01722: 无效数字”错误的解决办法

程序员文章站 2022-06-17 19:58:35
报错信息:ora-01722: 无效数字 问题sql: select a.*, b.fund_code as fund_code, b.fund_fullname as fund_fu...

报错信息:ora-01722: 无效数字

问题sql:


select a.*,
b.fund_code as fund_code,
 b.fund_fullname as fund_fullname
from bsp_sys_attach a,bsp_fund_base b
where a.entity_id=b.fund_id

/*
    此处a.entity_id的类型为varchar;
    b.fund_id的类型为number;
    两者类型不匹配所以报错。
*/

更改后正确sql:

select a.*,
b.fund_code as fund_code,
 b.fund_fullname as fund_fullname
from bsp_sys_attach a,bsp_fund_base b
where a.entity_id=to_char(b.fund_id)

/*
    类型转换函数to_char()
*/

拓展:

将日期型转换为字符串to_char()

select 
to_char (sysdate, 'yyyy-mm-dd hh24:mi:ss am')
from dual

将数字型转换为字符串to_char()

select 
to_char(123.45678,'$99999.999') 
from dual;

将字符换转换为日期to_date()

 
select 
to_date ('20100913', 'yyyy-mm-dd')
from dual;

将字符串转换为数字to_number()

select 
to_number('01') 
from dual;