我想知道如何在SQL中使用CASE
语句中的局部变量?SQL CASE和局部变量
这个脚本给我一个错误:
DECLARE @Test int;
DECLARE @Result char(10);
SET @Test = 10;
CASE @Test
WHEN @Test = 10
THEN SET @Result='OK test'
END
Print @Result;
我使用MS SQL 2008
我想知道如何在SQL中使用CASE
语句中的局部变量?SQL CASE和局部变量
这个脚本给我一个错误:
DECLARE @Test int;
DECLARE @Result char(10);
SET @Test = 10;
CASE @Test
WHEN @Test = 10
THEN SET @Result='OK test'
END
Print @Result;
我使用MS SQL 2008
在这种情况下使用CASE与MSSQL
DECLARE
@test int,
@result char(10)
SET @test = 10
SET @result = CASE @test
WHEN 10 THEN
'OK test'
ELSE
'Test is not OK'
END
PRINT @result;
SET @result = CASE
WHEN @test = 10 THEN
'OK test'
ELSE
'Test is not OK'
END
PRINT @result
在SQL Server中我会写这样的:
DECLARE @Test int;
DECLARE @Result char(10);
SET @Test = 10;
SET @Result = CASE @Test
WHEN 10
THEN 'OK test'
END
Print @Result;
的WHEN
子句不具有@Test = 10
,因为@Test
变量在CASE
子句中陈述。
请参阅CASE
SQL Server的文档。
这不适用于我的SQL 2005分贝。 (关键字'Case'附近的语法不正确)。 (我有同样的解决方案,但它没有工作)。 – Tobiasopdenbrouw 2010-08-04 07:25:17
它给出错误 – GibboK 2010-08-04 07:26:09
这里的语法是错误的。你不能像if语句那样使用case语句。 – 2010-08-04 07:26:53
CASE WHEN @Test 10 THEN
DECLARE @Test int;
SET @Test = 10;
SELECT
CASE @Test
WHEN 10
THEN 'OK test'
END
对于SQL Server 2005
anishmarokey的答案稍微清晰一些,因为它保留了@result变量。 – Tobiasopdenbrouw 2010-08-04 07:30:25
尝试这两种方式:
DECLARE @Test int;
DECLARE @Result char(10);
SET @Test = 10;
select @Result=
CASE @Test
WHEN 10 THEN 'OK test'
END
Print @Result;
你使用什么数据库? – Oded 2010-08-04 07:20:13
MS SQL 2008 MS SQL 2008 – GibboK 2010-08-04 07:24:38
他们是否放弃了名称的“服务器”部分? ;-P – 2010-08-04 07:45:50