我想使用一条CASE语句在SQL Server中设置一个变量。例如:
DECLARE @UNITY VARCHAR(5)
DECLARE @AUX VARCHAR(5)
CASE
WHEN @UNITY = 'U1' THEN @AUX = 'M1'
WHEN @UNITY = 'U2' THEN @AUX = 'M2'
WHEN @UNITY = 'U3' THEN @AUX = 'M3'
END
Run Code Online (Sandbox Code Playgroud)
您不能case用作流控制。SQL case是一个根据条件返回标量值的表达式。备注部分对此
进行了详细记录:
CASE表达式不能用于控制Transact-SQL语句,语句块,用户定义的函数和存储过程的执行流程。有关流控制方法的列表,请参见流控制语言(Transact-SQL)。
可以这样编写工作代码:
DECLARE @UNITY VARCHAR(5)
DECLARE @AUX VARCHAR(5)
SET @AUX =
CASE @UNITY
WHEN 'U1' THEN 'M1'
WHEN 'U2' THEN 'M2'
WHEN 'U3' THEN 'M3'
END
Run Code Online (Sandbox Code Playgroud)
注意为简洁起见,我使用简单CASE表达式语法。