sql case 用法總結

2022-01-15 02:12:14 字數 1720 閱讀 1240

快下班了,抽點時間總結一下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 int

set @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...