You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL WHERE子句使用CASE语句触发Msg 102语法错误如何解决

错误原因

你的代码存在两个语法问题:

  • SQL中CASE表达式的THEN/ELSE分支仅支持返回具体值,不支持直接返回[字段] = 1这类布尔判断表达式,这是触发=附近语法错误的核心原因
  • 你写的CASE语句没有添加必需的END关键字完成闭合

修复方案

方案1:调整CASE语句写法

只让CASE返回对应平台字段的值,将比较逻辑放到表达式外部:

@Platform AS INT,
@Type AS INT
AS
BEGIN
    SELECT 
        [Product_Name],
        [Product_Description],
        [Product_Release],
        [Product_Image],
        [Windows_PC],
        [Linux],
        [Mac],
        [Android],
        [Fire_TV],
        [Amazon_App_Store],
        [Google_Play_Store],
        [X_Box],
        [Switch],
        [Playstation],
        [Link_Game_Play],
        [Link_Twitter],
        [Link_Download],
        [Link_Web],
        [Available_Now],
        [New_Release],
        [Coming_Soon],
        [Open_Beta]
    FROM
        [White_Box_Gaming].[dbo].[WBG_Product_Profile]
    WHERE
        CASE 
            WHEN @Platform = 1 THEN [Windows_PC]
            WHEN @Platform = 2 THEN [Mac]
            WHEN @Platform = 3 THEN [Linux]
            WHEN @Platform = 4 THEN [Android]
            ELSE [Windows_PC]
        END = 1
END

方案2:改用OR组合条件(更推荐)

这种写法执行效率更高,逻辑也更直观:

WHERE
  (@Platform = 1 AND [Windows_PC] = 1)
  OR (@Platform = 2 AND [Mac] = 1)
  OR (@Platform = 3 AND [Linux] = 1)
  OR (@Platform = 4 AND [Android] = 1)
  OR (@Platform NOT IN (1,2,3,4) AND [Windows_PC] = 1)

内容的提问来源于stack exchange,提问作者mholmes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:54:03