快下班了,抽點時間總結一下sql 的 case 用法。
sql 裡的case的作用: 用於計算條件列表的表示式,並返回可能的結果之一。sql 的case 型別於程式語言裡的 if-esle if-else 或者 switch,但它不用於控制sql程式的執行流程,而是作為列的邏輯使用。
語法:case [input_expression]
when when_expression then result_expression
[...n]
[else else_result_expression]
end注:其中內都是可選的。
準備測試資料:
declare @stuinfo table(id int,
sname nvarchar(20),
gender varchar(1),
sgroup int)
insert into @stuinfo
select 1,'張三','m',1 union all
select 2,'李四','f',1 union all
select 3,'王五','f',2 union all
select 4,'趙六','m',3 union all
select 5,'黃七','m',3
1. case後加表示式
根據表示式結果返回。
select *,case sgroup
when 1 then n'組1'
when 2 then n'組2'
when 3 then n'組3'
else n'未知' end groupname
from @stuinfo
2. case 後不加表示式
不加表示式,則根據when的條件返回。
select *,case
when sgroup = 1 and gender = 'm' then n'第一組男生'
when sgroup = 1 and gender = 'f' then n'第一組女生'
when sgroup = 2 and gender = 'm' then n'第二組男生'
when sgroup = 2 and gender = 'f' then n'第二組女生'
when sgroup = 3 and gender = 'm' then n'第三組男生'
when sgroup = 3 and gender = 'f' then n'第三組女生'
else n'未知' end comment
from @stuinfo
3. 用於 order by
如果儲存過程需要支援多種排序,可以傳遞乙個引數變數,然後根據該變數判斷即可。
declare @orderby intset @orderby = 1
select * from @stuinfo
order by
case when @orderby = 1 then id end desc,
case when @orderby = 2 then id end
這裡要用多個case,因為desc需要放在end 後面,否則會有語法錯誤。
SQL CASE 多條件用法
case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...
SQL CASE 多條件用法
case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...
SQL CASE的使用例子
在sql的case語句相當於常用的程式設計邏輯if else,只要前面的條件滿足,就不會再去執行下面的語句 例子 select principal ids,principal names from materials data where material category like z003 an...