oracle 隐式转换 bug,一个number与varchar2隐式转换的问题

有如下SQL语句:

SELECT a.group_id,

COUNT(distinct(case

when SRV_STATE <> 'R' AND month = 201008 AND

PID in

(select item_id

from temp_2

where id = 8

and substr(node, 1, 4) in

('0001', '0002', '0003', '0004')) then

serv_id

end)) cnt

FROM temp_1 a

WHERE a.state = 'A'

AND nvl(a.flag, 0) < 2

GROUP BY a.group_id

执行报错:ORA-01722 invalid number

将子查询改为

(select item_id

from temp_2

where id = '8'

and substr(node, 1, 4) in

('0001', '0002', '0003', '0004')) 后,整段SQL可出来结果

不明白,为什么改成id = '8'后,就可出正确结果?

有验证过,select item_id

from temp_2

where id = 8

and substr(node, 1, 4) in

('0001', '0002', '0003', '0004') 与

select item_id

from temp_2

where id = '8'

and substr(node, 1, 4) in

('0001', '0002', '0003', '0004')均可出结果

就怀疑是不是哪的隐式转换出问题了呢?

附上表结构:

SQL> desc temp_1

Name             Type          Nullable Default Comments

---------------- ------------- -------- ------- --------

MONTH       NUMBER(12)

SERV_ID          NUMBER(12)

FLAG         NUMBER(1)

PID       NUMBER(9)

STATE            VARCHAR2(3)

SRV_STATE       VARCHAR2(3)

GROUP_ID    VARCHAR2(20)

SQL> desc temp_2

Name      Type          Nullable Default Comments

--------- ------------- -------- ------- --------

ID   VARCHAR2(30)

NODE   VARCHAR2(30)

ITEM_ID   VARCHAR2(30)

写得有点长,希望有把问题说清楚,呵呵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值