我在存储过程中有以下SELECT查询,我正在开发:
AND (
CASE S.SWITCH
WHEN 'A' THEN P.TEST = T.OPTION_1
WHEN 'C' THEN P.TEST = T.OPTION_1 + T.OPTION_2
WHEN 'G' THEN P.TEST = T.OPTION_3
WHEN 'N' THEN TRUE
ELSE FALSE
END
)
我收到Incorrect syntax near '='
错误。为什么会抱怨第一个等号?如果有人有兴趣,它是Sybase服务器。
答案 0 :(得分:2)
如果您根据P.TEST
案例测试S.SWITCH
值,则案例比较应如下所示。
AND (
P.TEST =
CASE
WHEN S.SWITCH = 'A' THEN T.OPTION_1
WHEN S.SWITCH = 'C' THEN T.OPTION_1 + T.OPTION_2
WHEN S.SWITCH = 'G' THEN T.OPTION_3
WHEN S.SWITCH = 'N' THEN TRUE
ELSE FALSE
END
)
如果您基于P.TEST和S.SWITCH进行比较,您可以执行以下任一操作
Blorgbeard已经提供了这个答案
AND
(
(S.SWITCH = 'A' AND P.TEST = T.OPTION_1) OR
(S.SWITCH = 'C' AND T.OPTION_1 + T.OPTION_2) OR
(S.SWITCH = 'G' AND P.TEST = T.OPTION_3) OR
(S.SWITCH = 'N')
)
如果您想让case语句为此工作,可以采用以下方法。
AND (
CASE 1 =
WHEN S.SWITCH = 'A' AND P.TEST = T.OPTION_1 THEN 1
WHEN S.SWITCH = 'C' AND P.TEST = T.OPTION_1 + T.OPTION_2 THEN 1
WHEN S.SWITCH = 'G' AND P.TEST = T.OPTION_3 THEN 1
WHEN S.SWITCH = 'N' THEN 1
ELSE 0
END
)
答案 1 :(得分:1)
布尔表达式不像SQL中那样工作。您可以像这样重新配置您的开关:
import pandas as pd
from pylab import *
fig = figure( figsize=(5,5) )
ax = fig.add_subplot(111)
ax.plot( np.arange(df.shape[0]), df.sort(['A']).A )
答案 2 :(得分:0)
我知道这不仅仅是一个评论而是一个答案,但希望这会导致答案,我需要为此做格式化代码......
我在Mysql中试过这个并且它有效。您可以在Sybase中尝试这样的事情并查看它返回的内容吗?重点是,提取失败的部分并测试它,看看你是否可以弄清楚究竟出了什么问题。可能是Sybase指向那个等号,但其他东西真的让人感到困惑。
#semistuck
这返回1,因为miller ='C'需要检查mtime = 2,这是真的,这意味着Mysql中的1或者是真的。
您是否可以尝试在Sybase中隔离这样的代码?