在資料庫中,對數據進行比對,有兩種用法,第一種:不對任何列進行條件判斷SELECT Student_ID AS 學號,English AS 英語成績,CASE WHEN English>=120 THEN '優秀'WHEN English>=60 AND English<=100 THEN '及格....
在資料庫中,對數據進行比對,有兩種用法,
第一種:不對任何列進行條件判斷
SELECT Student_ID AS 學號,English AS 英語成績, CASE WHEN English>=120 THEN '優秀' WHEN English>=60 AND English<=100 THEN '及格' WHEN English<60 THEN '不及格' END AS 描述 FROM dbo.Score
執行的結果是:
學號 | 英語成績 | 描述 |
1 | 120 | 優秀 |
2 | 100 | 及格 |
3 | 55 | 不及格 |
4 | 59 | 不及格 |
5 | 60 | 及格 |
從Case開始判斷,判斷什麼?不知道,當when開始的時候,才知道判斷什麼東西,類似於C#中的if...esle if...else..
第二種:直接case列,值判斷
SELECT CASE StudentID WHEN 1 THEN '學號為1' WHEN 2 THEN '學號為2' WHEN 3 THEN '學號為3' WHEN 4 THEN '學號為4' END FROM dbo.Student
執行的結果為:
(無列名)
學號為1
學號為2
學號為3
學號為4
NULL
看到最後一個是NULL,都不滿足Case條件的話,如果沒有Else語句,預設返回NULL值。
從Case開始,一開始就知道要判斷StudentID的值,如果是1,就輸出“學號為1”,後面依次類推。。。
相當於C#中的Switch(條件)case
SELECT CASE StudentID WHEN 1 THEN '學號為1' WHEN 2 THEN '學號為2' WHEN 3 THEN '學號為3' WHEN 4 THEN '學號為4' ELSE '無名氏' END FROM dbo.Student
這個SQL,執行的結果是:
(無列名)
學號為1
學號為2
學號為3
學號為4
無名氏
case 多個列的情況: