IF ELSE语法错误

时间:2014-11-13 21:46:54

标签: sql-server tsql

我的IF..ELSE阻止在BEGIN处失败。我能理解我的表达式本质上不是布尔值,而是导致这种失败的原因是什么?

IF (SUBSTRING(@PARIDIN,1,1) = 'P' 
BEGIN
  SET @PARIDTEMP = SUBSTRING(LTRIM(RTRIM(@PARIDIN)),2,6))
END
BEGIN
  ELSE SET @PARIDTEMP = @PARIDIN
END

3 个答案:

答案 0 :(得分:2)

你在一个奇怪的地方有一组额外的括号。:

IF SUBSTRING(@PARIDIN,1,1) = 'P' -- one at the beginning of this line.
 BEGIN
  SET @PARIDTEMP = SUBSTRING(LTRIM(RTRIM(@PARIDIN)),2,6) -- one at the end of this line.
 END
ELSE
 BEGIN
  SET @PARIDTEMP = @PARIDIN
 END

答案 1 :(得分:1)

您没有关闭正在评估的表达式。

更改

IF (SUBSTRING(@PARIDIN,1,1) = 'P'

IF (SUBSTRING(@PARIDIN,1,1) = 'P')

答案 2 :(得分:0)

采取其他人的建议来解决这个问题我很惊讶没有人提到非常奇怪的BEGIN END块。他们没有意义,也不确定他们是否会工作。由于每个语句只有一个语句,因此删除它们更有意义。

IF (SUBSTRING(@PARIDIN,1,1) = 'P')
  SET @PARIDTEMP = SUBSTRING(LTRIM(RTRIM(@PARIDIN)),2,6))
ELSE 
    SET @PARIDTEMP = @PARIDIN