測試資料
本文中的範例沒有使用資料表,而是使用類似 oracle 中 dual 的方式:
select 1 as value;
輸出結果:
| value |
|:------|
| 1 |
IIF
三元運算,語法非常簡潔,在簡易的判斷中非常好用。需要為 SQL Server 2012 或以上
select value,
IIF(value = 1, 'one', 'other'),
IIF(value IN (1, 2, 3), 'A', 'B'),
IIF(value = 2, 'two', IIF(value = 1, 'one', 'other')),
IIF(value % 2 = 0, '偶數', '奇數')
from (select 1 as value) as t;
輸出結果:
| value | | | | |
|:------|:----|:----|:----|:-----|
| 1 | one | A | one | 奇數 |
CASE
在查詢語法中要使用到判斷,最好的方式不是使用 IF,而是使用 CASE ,並且幾乎所有版本都能使用,直接看範例:
select value,
(CASE
WHEN value = 1 THEN 'one'
WHEN value = 2 THEN 'two'
WHEN value = 3 THEN 'three'
ELSE 'other'
END) as data
from (select 3 as value) as t;
輸出結果:
| value | data |
|:------|:------|
| 3 | three |
IF
IF 不能直接在查詢中使用,不過還是非常常用到,這裡也附上使用的方式:
DECLARE @val INT;
SET @val = 3;
if @val = 1
select 'one' as value;
else
if @val = 2
select 'two' as value;
else
select 'other' as value;
輸出結果:
| value |
|:------|
| other |
參考資料:
Microsoft.Learn - Logical Functions - IIF (Transact-SQL)
Microsoft.Learn - IF...ELSE (Transact-SQL)
Microsoft.Learn - ELSE (IF...ELSE) (Transact-SQL)
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com