2010-10-05 76 views
0

我必須更新表,並且我不能在tsql中使用else。它是否存在?else else如果在tsql中

Status = 
(
CASE 
WHEN 
(Status in (0)) 
THEN 
0 
ELSE IF Status in (1) 
THEN 
7 
ELSE 
Status 
END 
+0

是的,它確實存在 - 但不是當你的SQL沒有道理。狀態IN(0)??你想達到什麼? – RPM1984 2010-10-05 10:52:31

+0

這只是一個例子。實際會有更多狀態 – user278618 2010-10-05 11:48:47

回答

3

CASE WHEN syntax不支持多個條件:

Status = CASE WHEN Status = 0 THEN 0 
       WHEN Status = 1 THEN 7 
       ELSE Status 
     END 

既然你是平等比較同場在這兩種情況下,你可以使用更短的符號:

Status = CASE Status WHEN 0 THEN 0 
        WHEN 1 THEN 7 
        ELSE Status 
     END 
1

再次使用CASE WHEN:

Status = CASE WHEN Status in (0) 
       THEN 0 
       ELSE CASE WHEN Status in (1) 
          THEN 7 
          ELSE Status 
        END 
     END 

Status = CASE WHEN Status in (0) THEN 0 
       WHEN Status in (1) THEN 7 
       ELSE Status 
     END 
0

是, 您可以使用IF在SQL語句中。 檢查這個

Declare @x int 
    set @x = 29 
    if @x = 29 print 'The number is 29' 
    if @x = 30 print 'The number is 30' 
+0

在基於集合的更新語句中使用沒有幫助。 – 2010-10-05 21:40:36

1

應使用以下語法:

Status = 
    (CASE WHEN (Status in (0)) THEN 0 
      WHEN (Status in (1)) THEN 7 
      ELSE Status 
    END) 
1

嘗試

Status = 
(
CASE 
WHEN 
(Status in (0)) 
THEN 
0 
WHEN Status in (1) 
THEN 
7 
ELSE 
Status 
END