pyodbc似乎不处理ORACLE DB中的CASE语句

问题描述 投票:0回答:1

我正在使用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}。

感谢您的帮助。

sql database oracle case pyodbc
1个回答
0
投票

尝试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。抱歉,没有按时看到。

© www.soinside.com 2019 - 2024. All rights reserved.