我使用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
。对不起,没有准时看到。