pyodbc似乎不处理来自ORACLE数据库的CASE语句



我使用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,
case
 nbsp nbsp nbsp;当zz>10000000时,则为"A">
nbsp nbsp nbsp 
当zz<10000000然后'B'
结束为来自xxyyzz的casest
,其中zz不为null;类"pyodbcError"返回了一个带有错误集的结果

请记住,上面的语句在SqlDeveloper中有效。我尝试过join、where、with、partition、decode语句,它们都能很好地与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。对不起,没有准时看到。

相关内容

  • 没有找到相关文章

最新更新