當前位置:編程學習大全網 - 源碼下載 - 條件判斷函數-CASE WHEN、IF、IFNULL詳解

條件判斷函數-CASE WHEN、IF、IFNULL詳解

在眾多SQL中,統計型SQL絕對是讓人頭疼的壹類,之所以如此,是因為這種SQL中必然有大量的判讀對比。而條件判斷函數就是應對這類需求的利器。本文重點總結 CASE WHEN 、 IF 、 IFNULL 三種函數。

Case when語句能在SQL語句中織入判斷邏輯,類似於Java中的if else語句。

CASE WHEN語句分為簡單函數和條件表達式。

1、簡單函數

如果字段值等於預期值,則返回結果1,否則返回結果2。

下面通過壹個簡單的示例來看壹下具體用法。

表score:

場景:在score表中,sex為1表示男性,sex=0表示女性,查詢時轉換成漢字顯示。

SQL語句:

結果:

2、條件表達式

CASE的簡單函數使用簡便,但無法應對較為復雜的場景,這就需要用到條件表達式了,其語法結構如下:

解釋壹下,語句中的condition是條件判斷,如果該判斷結果為true,那麽CASE語句將返回result,否則返回result2,如果沒有ELSE,則返回null。CASE與END之間可以有多個WHEN…THEN…ELSE語句。END表示CASE語句結束。

場景:score 大於等於90為優秀,80-90為良好,60-80為及格,小於60為不及格,用SQL語句統計出每個學生的成績級別。

SQL:

結果:

3、綜合使用

CASE WHEN 和 聚合函數綜合使用,能實現更加復雜的統計功能。

先看第1個場景

在下表 score (sex=1為男,sex=0為女)中,統計有多少個男生和女生以及男女生及格的各有多少個。

SQL:

結果:

再看第2個場景

將上面的score表轉換為下面形式:

SQL:

結果如下:

IF函數也能通過判斷條件來返回特定值,它的語法如下:

expr是壹個條件表達式,如果結果為true,則返回result_true,否則返回result_false。

用壹個示例演示,還是表score:

使用IF函數:

可以看出,在壹些場景中, IF 函數和 CASE WHEN 是有同樣效果的,前者相對簡單,後者能應對更復雜的判斷。

另外,IF函數還可以和聚合函數結合,例如查詢班級男生女生分別有多少人:

在Java程序中調用sql語句時,如果返回結果是 null ,是非常容易引發壹些意外情況的。

因此,我們希望在SQL中做壹些處理,如果查詢結果是 null ,就轉換為特定的值,這就要用到Mysql中 IFNULL 函數。

首先SQL壹般寫法是這樣的:

使用 IFNULL 改寫壹下:

但使用 IFNULL 語句,如果 where 條件中的 name 值是不存在的,那麽仍將返回 null ,例如:

這時候,需要改寫成下面的形式:

在實際應用中,如果妳確定 where 條件的值壹定存在,使用前者就可以了,否則要用後者。

IFNULL 函數也可以結合聚合使用,例如:

其他, AVG 、 COUNT 等用同樣方式處理,而且,無論 where 條件存在不存在,結果都是會返回0的。

END

引用鏈接:blog.csdn.net/mu_wind/article/details/93976316

  • 上一篇:UNIX、Linux和windows 之間的聯系與區別?專家來,。
  • 下一篇:2018卡蒙源代碼
  • copyright 2024編程學習大全網