在 T-SQL CASE 语句的 WHEN 条件中设置变量等于数字时语法不正确[关闭]
Posted
技术标签:
【中文标题】在 T-SQL CASE 语句的 WHEN 条件中设置变量等于数字时语法不正确[关闭]【英文标题】:Incorrect syntax when setting variable equal to a number in WHEN condition of T-SQL CASE statement [closed] 【发布时间】:2021-11-30 12:57:27 【问题描述】:上下文:我有一个返回格式化字符串的标量函数。执行的格式化类型取决于传递的字符串的长度LEN()
- 这由 T-SQL CASE
语句处理。
问题:为什么设置变量@LengthOfString
等于数字时出现语法错误?
错误:
'=' 附近的语法不正确
相关代码:
CREATE OR ALTER FUNCTION FormatString
(@PassedString varchar(255) NULL)
...
DECLARE @FormattedString varchar(255)
DECLARE @LengthOfString int = LEN(@PassedString)
SET @FormattedString = (SELECT
CASE @LengthOfString
WHEN @LengthOfString = 5
THEN RETURN Format(<formatting>)
WHEN ...
【问题讨论】:
您缺少一些相关代码,例如@PassedString
的定义和值,参见Minimal, Reproducible Example,以及实际 错误。
@Stu,谢谢。现在应该包括在内。
删除null
- 这本身就是一个语法错误,声明的变量默认为null;DECLARE @LengthOfString int = len(@PassedString)
我还会阅读 case
的语法,因为您的代码片段也是语法错误,而 this 就是您的问题。
@Stu 谢谢。感谢您对问题格式和问题本身的帮助。
【参考方案1】:
删除CASE
旁边的@LengthOfString
该语句应如下所示:
SET @FormattedString = (SELECT CASE
WHEN @LengthOfString = 5 THEN RETURN Format(<formatting>)
WHEN ...
【讨论】:
以上是关于在 T-SQL CASE 语句的 WHEN 条件中设置变量等于数字时语法不正确[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
T-SQL:在 UPDATE 语句中使用 CASE 根据条件更新某些列