SQL语法错误时的情况

时间:2017-10-17 12:42:36

标签: sql

我第一次尝试使用CASE语句,我无法理解为什么在最后一个WHEN和ELSE上出现语法错误。如果值以特定字符集开头,我试图提取substring。我的代码如下:

    SELECT
CASE
        WHEN LEFT ([RCode],2) = 'BB' THEN SUBSTRING([RCode],3,LEN([RCode]))
        WHEN LEFT ([RCode],4) = 'APT-' THEN SUBSTRING([RCode],5,LEN([RCode])
        WHEN LEFT ([RCode],4) = 'PS-' THEN SUBSTRING([RCode],4,LEN([RCode])
        ELSE [RCode]
END

  FROM [Xperdyte].[dbo].[tJCLines]

任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:0)

这不会(必然)修复您的语法问题,但我建议您使用 SELECT (CASE WHEN RCode LIKE 'BB%' THEN SUBSTRING([RCode], 3, LEN([RCode])) WHEN RCode LIKE 'APT-%' THEN SUBSTRING([RCode], 5, LEN([RCode])) WHEN RCode LIKE 'PS-%' THEN SUBSTRING([RCode], 4, LEN([RCode])) ELSE [RCode] END) FROM [Xperdyte].[dbo].[tJCLines]; 进行比较:

PictureBox

然后你不必计算字符 - 第三个条件会匹配。

答案 1 :(得分:0)

错过了两个右括号。

SELECT CASE WHEN LEFT([RCode],2) = 'BB' 
            THEN SUBSTRING([RCode],3,LEN([RCode]))
            WHEN LEFT([RCode],4) = 'APT-' 
            THEN SUBSTRING([RCode],5,LEN([RCode]))
            WHEN LEFT([RCode],4) = 'PS-' 
            THEN SUBSTRING([RCode],4,LEN([RCode]))
            ELSE [RCode]
       END
FROM [Xperdyte].[dbo].[tJCLines]