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

T-SQL CASE语句WHEN条件中变量赋值数字语法错误原因查询

错误原因

你混用了T-SQL中CASE表达式的两种语法格式,同时存在关键字错用问题,共同触发了语法报错:

  • T-SQL的CASE分为两类语法,你开头写了CASE @LengthOfString,属于简单CASE表达式的声明,这种格式要求WHEN后只能接直接匹配的常量值,不能写完整的判断表达式@LengthOfString = 5,不符合语法规则所以抛出等号附近语法错误的提示。
  • 你在THEN分支中使用了RETURN关键字,当前你是把CASE的运行结果赋值给@FormattedString变量,RETURN是直接终止函数并返回结果的关键字,不能嵌套在赋值语句的表达式内部。

修正方案

方案1:使用简单CASE表达式(适合仅按长度值精确匹配的场景)

直接在WHEN后写要匹配的长度值即可:

SET @FormattedString = CASE @LengthOfString
    WHEN 5 THEN FORMAT(/* 此处填写你实际的格式化逻辑 */)
    WHEN 6 THEN FORMAT(/* 其他长度对应的格式化逻辑 */)
    -- 补充其他需要的WHEN分支
    ELSE @PassedString -- 兜底逻辑,可按需调整
END

方案2:使用搜索CASE表达式(适合需要判断长度区间等复杂条件的场景)

开头CASE后不跟变量,WHEN后写完整判断条件:

SET @FormattedString = CASE
    WHEN @LengthOfString = 5 THEN FORMAT(/* 格式化逻辑 */)
    WHEN @LengthOfString BETWEEN 6 AND 10 THEN FORMAT(/* 对应区间的格式化逻辑 */)
    -- 补充其他需要的WHEN分支
    ELSE @PassedString
END

方案3:直接返回结果无需赋值的写法

如果你不需要中间变量存储结果,可以直接在RETURN后接CASE表达式:

RETURN CASE @LengthOfString
    WHEN 5 THEN FORMAT(/* 格式化逻辑 */)
    -- 其他分支
    ELSE @PassedString
END

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:06:03