SQL CASE和局部变量

时间:2010-08-04 07:17:50

标签: sql sql-server tsql sql-server-2008

我想知道如何在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。

5 个答案:

答案 0 :(得分:21)

在这种情况下使用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

答案 1 :(得分:3)

试试这个:

DECLARE @Test int;
DECLARE @Result char(10);
SET @Test = 10;

select @Result=
CASE @Test
WHEN 10 THEN  'OK test'
END

Print @Result;

答案 2 :(得分:2)

在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变量。

请参阅SQL Server的CASE文档。

答案 3 :(得分:0)

CASE @Test 10,然后

答案 4 :(得分:0)

DECLARE @Test int;
SET @Test = 10;

SELECT 
CASE @Test
WHEN 10
THEN 'OK test'
END

对于SQL Server 2005