Sybase proc抛出" ='"""""

时间:2015-08-12 21:13:17

标签: sql syntax syntax-error sybase

我在存储过程中有以下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服务器。

3 个答案:

答案 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进行比较,您可以执行以下任一操作

  1. 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')
    )
    
  2. 如果您想让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中隔离这样的代码?