T-SQL Case表达式中的求值变量
我得到一份工作 所有“=”的“=”附近的语法不正确 在下列情况下:T-SQL Case表达式中的求值变量,sql,sql-server,tsql,case,Sql,Sql Server,Tsql,Case,我得到一份工作 所有“=”的“=”附近的语法不正确 在下列情况下: DECLARE @TipoRegisto AS VARCHAR(1) DECLARE @idTipoRegisto AS INT SELECT CASE @TipoRegisto WHEN @idTipoRegisto = 0 THEN 'R' WHEN @idTipoRegisto = 1 THEN 'I'
DECLARE @TipoRegisto AS VARCHAR(1)
DECLARE @idTipoRegisto AS INT
SELECT
CASE @TipoRegisto
WHEN @idTipoRegisto = 0 THEN 'R'
WHEN @idTipoRegisto = 1 THEN 'I'
WHEN @idTipoRegisto = 2 THEN 'C'
ELSE ''
END
有人能解释一下原因吗?如果你真的很接近,Case会返回你想要设置变量的值
DECLARE @TipoRegisto AS VARCHAR(1)
DECLARE @idTipoRegisto AS INT
SELECT @TipoRegisto = CASE
WHEN @idTipoRegisto = 0 THEN 'R'
WHEN @idTipoRegisto = 1 THEN 'I'
WHEN @idTipoRegisto = 2 THEN 'C'
ELSE ''
END
试试这个:
DECLARE @TipoRegisto AS VARCHAR(1)
DECLARE @idTipoRegisto AS INT
SET @TipoRegisto = (SELECT
CASE @idTipoRegisto
WHEN 0 THEN 'R'
WHEN 1 THEN 'I'
WHEN 2 THEN 'C'
ELSE ''
END)
那个SELECT真的有必要吗?和Cheruvian的答案相比,它不会恶化查询的性能吗?这是不必要的…但如果您从表中检查列值,那个时候您需要它。另一个,您正在检查一个变量,所以您可以使用这个简单的case语句。(
CASE WHEN THEN WHEN END
而不是CASE WHEN=THEN WHEN=THEN END
)