我必須更新表,並且我不能在tsql中使用else。它是否存在?else else如果在tsql中
Status =
(
CASE
WHEN
(Status in (0))
THEN
0
ELSE IF Status in (1)
THEN
7
ELSE
Status
END
我必須更新表,並且我不能在tsql中使用else。它是否存在?else else如果在tsql中
Status =
(
CASE
WHEN
(Status in (0))
THEN
0
ELSE IF Status in (1)
THEN
7
ELSE
Status
END
的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
再次使用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
是, 您可以使用IF在SQL語句中。 檢查這個
Declare @x int
set @x = 29
if @x = 29 print 'The number is 29'
if @x = 30 print 'The number is 30'
在基於集合的更新語句中使用沒有幫助。 – 2010-10-05 21:40:36
應使用以下語法:
Status =
(CASE WHEN (Status in (0)) THEN 0
WHEN (Status in (1)) THEN 7
ELSE Status
END)
嘗試
Status =
(
CASE
WHEN
(Status in (0))
THEN
0
WHEN Status in (1)
THEN
7
ELSE
Status
END
是的,它確實存在 - 但不是當你的SQL沒有道理。狀態IN(0)??你想達到什麼? – RPM1984 2010-10-05 10:52:31
這只是一個例子。實際會有更多狀態 – user278618 2010-10-05 11:48:47