SQL語句CASE與IF

Case:根據一個條件的狀態實現邏輯的分支,可用於查詢語句中

1:簡單case語句用於根據一個字面值進入某個邏輯

2:搜索型case語句用於根據一個表達式的值進入某個邏輯

簡單case語句

Case 字段

When 表達式B/值 then 結果B

When 表達式C/值 then 結果C

Else 結果D

End

說明:計算表達式A的值,與每一個when後面的表達式的值比較,若相等,則返回對應的結果,否則返回else的結果。

表達式A與when後表達式的數據類型必須相同,或者可隱形轉換

搜索型case語句

Case

When 布爾表達式A then 結果A

When 布爾表達式B then 結果B

Else 結果C

End

說明:按順序計算布爾表達式的值,爲true則返回對應的結果,若結果都爲false則返回else對應的結果,如果沒有else子句,則返回null

SELECT  

    THIRDSYSTIME AS 交易時間,AMOUNT  AS 交易金額,AUTHORCODE  AS 交易碼, FEE  AS 手續費,SYSSERNO AS 系統跟蹤號  

FROM T_CPS_CUPSICACINFO;
帶else語句:
SELECT (CASE
		WHEN THIRDSYSTIME=20180511 THEN '昨天'
		WHEN THIRDSYSTIME=20180512 THEN '今天'
	 ELSE '未知時間'
	 END) 交易時間,
	AMOUNT  AS 交易金額,AUTHORCODE  AS 交易碼, FEE  AS 手續費,SYSSERNO AS 系統跟蹤號
	FROM T_CPS_CUPSICACINFO;
SELECT (CASE THIRDSYSTIME
		WHEN 20180511 THEN '昨天'
		WHEN 20180512 THEN '今天'
		ELSE '未知時間'
	 END) 交易時間,
	AMOUNT  AS 交易金額,AUTHORCODE  AS 交易碼, FEE  AS 手續費,SYSSERNO AS 系統跟蹤號
	FROM T_CPS_CUPSICACINFO;
結果:
不帶else子句:
SELECT (CASE
		WHEN THIRDSYSTIME=20180511 THEN '昨天'
		WHEN THIRDSYSTIME=20180512 THEN '今天'
	 END) 交易時間,
	AMOUNT  AS 交易金額,AUTHORCODE  AS 交易碼, FEE  AS 手續費,SYSSERNO AS 系統跟蹤號
	FROM T_CPS_CUPSICACINFO;
SELECT (CASE THIRDSYSTIME
		WHEN 20180511 THEN '昨天'
		WHEN 20180512 THEN '今天'
	 END) 交易時間,
	AMOUNT  AS 交易金額,AUTHORCODE  AS 交易碼, FEE  AS 手續費,SYSSERNO AS 系統跟蹤號
	FROM T_CPS_CUPSICACINFO;

結果:

If語句語法:

If(條件表達式)

Then  [語句塊或者sql]

Else  [語句塊或者sql]

End if

1:if或者else區可以嵌套多個if語句,沒有嵌套限制,也可以只有if區而不帶else區
2:if用於存儲過程及函數中
CREATE PROCEDURE `pro1`(out v_result VARCHAR(10))
 BEGIN
     if ((select count(THIRDSYSTIME) from T_CPS_CUPSICACINFO where THIRDSYSTIME='20180511')<=5)
     then set v_result='昨天交易筆數小於5';
     else set v_result='昨天交易筆數大於5';
     end if;
 end

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章