我正在使用pyodbc连接到Oracle(64位),并且出于某种原因,以下Case sql语句在SQL Developer中有效,但在pyodbc中遇到错误。
select xx, yy, zz,
case
when zz > 10000000 Then 'A'
when zz < 10000000 Then 'B'
end as casetest
from xxyyzz where zz is not null;
错误:在sql上执行失败:'选择xx,yy,zz,案件当zz> 10000000时'A'当zz <10000000则'B'结束作为案例来自xxyyzz,其中zz不为null;类'pyodbcError'返回的结果带有错误集
请记住,以上语句在Sql Developer中有效。我尝试了联接,在其中使用分区,解码语句,它们都可以与pyodbc一起很好地工作。似乎CASE不起作用。
我怀疑我使用的驱动程序可能是问题。我使用的驱动程序是DRIVER = {OraClient12102中的Oracle}。
感谢您的帮助。
尝试DECODE
,也许会有所帮助:
select xx, yy, zz,
decode(sign(zz - 10000000 ), 1, 'A', -1, 'B') casetest
from xxyyzz where zz is not null;
顺便说一下,您编写的代码假定zz
不能完全是10000000
;正确吗?
P.S。嗯,对,您说您尝试过DECODE
。抱歉,没有按时看到。