2010-08-04 61 views
8

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

+0

你使用什麼數據庫? – Oded 2010-08-04 07:20:13

+0

MS SQL 2008 MS SQL 2008 – GibboK 2010-08-04 07:24:38

+0

他們是否放棄了名稱的「服務器」部分? ;-P – 2010-08-04 07:45:50

回答

19

在這種情況下使用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

在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的文檔。

+0

這不適用於我的SQL 2005分貝。 (關鍵字'Case'附近的語法不正確)。 (我有同樣的解決方案,但它沒有工作)。 – Tobiasopdenbrouw 2010-08-04 07:25:17

+0

它給出錯誤 – GibboK 2010-08-04 07:26:09

+0

這裏的語法是錯誤的。你不能像if語句那樣使用case語句。 – 2010-08-04 07:26:53

0

CASE WHEN @Test 10 THEN

0
DECLARE @Test int; 
SET @Test = 10; 

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

對於SQL Server 2005

+0

anishmarokey的答案稍微清晰一些,因爲它保留了@result變量。 – Tobiasopdenbrouw 2010-08-04 07:30:25

2

嘗試這兩種方式:

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

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

Print @Result;