oracle 连表查询时的数据类型问题
来源:互联网 发布:淘宝客导购app开发 编辑:程序博客网 时间:2024/06/12 11:27
今天同事在执行以下sql时报错:ORA-01722: invalid numberORA-01722: invalid number
select a0.*
from BK_FUNCTION a0
join BK_USER_POWER o0 on o0.APPID = a0.ID
where o0.DATAID = '81'
and o0.TYPES = '2'
and a0.VALID = '1';
尝试直接执行
select a0.*
from BK_FUNCTION a0
join BK_USER_POWER o0 on o0.APPID = a0.ID
没有报错
逐条去除查询条件 发现 o0表的字段都去掉后 报错消失
尝试修改 where o0.DATAID = '81'
and o0.TYPES = '2'
为
where o0.DATAID = '81'
and o0.TYPES = '1'
后报错消失
最终发现导致问题的原因是联合查询的On的字段类型不一致 a0.ID是number类型的
修改字段类型后问题消失
弯路主要是在执行不同的查询条件时 有时报错 有时不报
最后结论是 在执行联合查询时 字段类型不一致时 oracle聪明的会隐式转换
这就是 select a0.*
from BK_FUNCTION a0
join BK_USER_POWER o0 on o0.APPID = a0.ID 为什么成功的原因
但当查询条件有结果时 oracle的智商就不足以处理这种情况了 不会去做隐式转换
要么在查询时 加 to_number on o0.APPID = to_number(a0.ID)
或者 最好的方法 修改字段类型 -. -
- oracle 连表查询时的数据类型问题
- Oracle 连表查询
- oracle连表查询
- mysql连表查询时遇到的问题
- oracle 查询表 的数据类型
- 初学oracle 连表查询
- .net连oracle的问题
- 连表查询时" (+) "的神奇作用~!
- SQL的连表查询
- SQL的连表查询
- plsql连oracle服务器时,ORA-12154的奇怪问题
- 解决oracle中lob数据类型查询问题
- oracle学习之二(数据类型和表的查询)
- 一段Jdbc连Oracle的程序,并实现数据查询.
- Jdbc连Oracle的程序,并实现数据查询
- 不同版本的oracle数据类型的查询
- oracle两表关联查询不出数据时,有可能是关联的ID数据类型不一样
- 关于Hibernate的连表查询
- 多种系统exe打开方式还原的详细方法
- linux下带有CDT的Eclipse的helloworld编译错误的解决方法
- 一个很好的对8086cpu的Assembly的编写和调试教程&&Flags Register
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- VS2010窗口的最大化
- oracle 连表查询时的数据类型问题
- 动态规划入门(三)DP 基本思想 具体实现 经典题目 POJ1159 POJ1458 POJ1141
- vim操作技巧
- 安装APK时报Local path doesn't exist错误
- YUV12和YUV2格式
- 弹出窗口返回数据给父窗口
- 小技巧
- c++中strsub()的用法
- 如何在.net中使用存储过程