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

使用Switch命令能否修复T-SQL代码中CASE语句的解析报错问题

报错原因

报错由两处CASE语法错误导致,另外你提到的Switch无法识别是因为该函数不属于T-SQL原生语法,仅支持在Access、SSRS表达式等场景使用,T-SQL中分支判断统一使用CASE表达式即可。
两处具体语法错误:

  • 第一个CASE块的首行When ([gdklinkID] = 1 then [stuListName]多了一个未闭合的左括号(,直接导致解析器无法识别后续的THEN关键字
  • 第一个CASE块的When [gdklinkid] = 12, then 'Pass Thru'行,在判断条件后多写了一个多余的逗号,,触发逗号无法识别的报错
修正后代码

修正上述两处语法错误后,代码可正常解析运行:

Case
    When [gdklinkID] = 1 then [stuListName]
    When [gdklinkID] = 2 then [tblmissionsite].[msnname]
    When [gdklinkID] = 4 then [spname]
    When [gdklinkid] = 6 then 'Best Use'
    When [gdklinkid] = 7 then [gdaname]
    When [gdklinkid] = 12 then 'Pass Thru'
    Else 'oops'
End AS CatDetail,
Case
    When [gdklinkID] = 1 then 'Contrib-StuFam'
    When [gdklinkid] < 5 then 'Contributions-Designated'
    When [gdklinkid] = 5 then 'Grants'
    When [gdklinkid] = 6 then 'Contributions-Undesignated'
    When [gdklinkid] = 7 and [gdaid] = 84 then 'Dividends'
    When [gdklinkid] = 7 and [gdaid] = 146 then 'Chk'
    When [gdklinkid] = 7 and [gdaid] = 147 then 'Svgs'
    When [gdklinkid] = 7 then  'Contributions-Undesignated'
    When [gdklinkid] = 12 then 'Pass Thru'
    Else 'oops'
End  AS CatDetail2
注意事项
  • T-SQL中CASE表达式的每个分支必须严格遵循WHEN 判断条件 THEN 返回值的结构,不能出现未闭合的括号、多余标点
  • 所有分支的返回值最好保持数据类型一致,避免隐式类型转换导致的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:24:29