MySQL中三種條件判斷函數

2020-12-12 老羅觀社會萬象

條件判斷表達式是為了實現控制流,也就是判斷在不同的條件下執行不同的流程。

MySQL中提供了三種條件判斷函數:IF()、IFNULL()與CASE。本文就逐一對其邏輯及使用方法進行探索。

【1】IF()

先看看其語法格式:IF(expr,v1,v2)

再看看其執行邏輯:若expr是TRUE(即:expr <> 0 and expr <> NULL),則該函數返回值為v1,否則返回值為v2。

所以,我們得出結論是其返回的值是在函數的入參中指定

接著我們來從簡單案例著手,由淺入深來探索其真正的價值。

IF(2019 > 2018,TRUE,FALES)執行報錯,我們可以得知函數中可以指定的值為MySQL保留詞;從IF(2019 > 2018,TRUE,FALSE)返回結果為1而不是TRUE可以得知,MySQL對TRUE再做了一次運算,即視TRUE為1;接著我們嘗試是否可以在expr封裝其他複雜邏輯(譬如函數)。

函數STRCMP('AEV','UCR')的計算結果為-1,即不等於0也不為NULL;依據函數STRCMP('AEV','UCR')的返回值,IF()返回的結果是v1(即:YES)。【2】IFNULL()

該函數則相對比較簡單,從它的語法格式IFNULL(v1,v2)可以看出它只需定義返回值不需定義判斷表達式,因為其函數名本身就是判斷的含義。

判斷兩個參數是否為NULL;若兩個參數都不為空,則返回第一個參數值;若第一個為空則返回第二個參數值;兩個參數也是可以封裝更複雜的運算(譬如函數)。【3】CASE

看語法格式我們會發現此類函數寫法上比較麻煩,但其表達的邏輯卻最貼近我們日常的思維習慣。

CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] ... [WHEN vn THEN rn] ... [ELSE r(n+1)] END或CASE WHEN v1 THEN r1 [WHEN v2 THEN r2] ... [WHEN vn THEN rn] ... ELSE r(n+1)] END

用通俗的話來讀這個判斷函數的就是:在條件expr滿足條件v1就返回值r1,滿足條件v2就返回值r2……否則就返回一個指定的值r(n+1)。

我們也可以看看第二種寫法。

【結論】兩種寫法的效果是一致的。

總結

MySQL的條件判斷函數有3大類每種條件判斷函數中都是可以封裝更複雜的運算邏輯每種條件判斷函數的返回值都是在參數中指定(具體值或表達式計算結果)。

相關焦點

  • MySQL常用判斷函數總結!!看你都用過沒
    說到if else 你肯定不陌生,這種判斷函數在各種程式語言中是家常便飯,但在編寫SQL語句中,或許你就很少用到了,甚至還沒怎麼玩兒過。
  • 【195期】MySQL中的條件判斷函數 CASE WHEN、IF、IFNULL你會用嗎?
    前言在眾多SQL中,統計型SQL絕對是讓人頭疼的一類,之所以如此,是因為這種SQL中必然有大量的判讀對比。而條件判斷函數就是應對這類需求的利器。本文重點總結CASE WHEN、IF、IFNULL三種函數。
  • MySQL5.7中如何使用開窗函數
    像這樣的需求,如果在Oracle、SQLserver、postgresql等資料庫中很容易實現,一個開窗函數row_nubmer() over(partition by xxx,yyy order by zzz)就可以解決。但是在MySQL8.0版本之前,是沒有這樣的開窗函數的。好在8.0之後的版本已經內置了開窗函數。不必自己寫實現邏輯了。
  • MySQL常用函數介紹
    SELECT語句及其條件表達式都可以使用這些函數,函數可以幫助用戶更加方便的處理表中的數據,使MySQL資料庫的功能更加強大。本篇文章主要為大家介紹幾類常用函數的用法。1.聚合函數聚合函數是平時比較常用的一類函數,這裡列舉如下:2.數值型函數數值型函數主要是對數值型數據進行處理,得到我們想要的結果,常用的幾個列舉如下,具體使用方法大家可以試試看。
  • 關於mysql中運算符與函數的概述
    運算符是告訴mysql執行特定的算術或邏輯操作的符號,運算符連接著各個表達式中的操作數,其作用是用來指明對操作數進行的運算。mysql字符函數:1.字符串連接函數:2.字符中轉換大小寫函數:3.求字符串長度的函數:4.刪除空格函數:5.截取字符串:6.獲取指定長度的字符串函數:
  • MySQL最常用分組聚合函數
    ,例如:count(max(…));  3)組函數的參數可以是列或是函數表達式;  4)一個SELECT子句中可出現多個聚集函數。|| MATCHES || PENALTIES || PLAYERS || TEAMS |+----+5 rows in set (0.00 sec) 1、count函數①count(*):返回表中滿足where條件的行的數量
  • MYSQL 常用函數
    字符串函數函數功能
  • 帶你深入了解MySQL ifnull()函數
    如果您對MySQL函數感興趣的話,不妨一看,相信對您會有所幫助。MySQL ifnull()函數和nvl()函數類似,但是也有所不同,下面就為您詳細介紹MySQL ifnull()函數 ,希望可以讓您對MySQL ifnull()函數有更深的認識。IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。
  • IF函數:用作條件判斷
    (全文737字,預計閱讀3分鐘)今天,我們一起來學習IF函數。IF函數用作條件判斷。代表邏輯判斷表達式,也就是需要做條件判斷的核心內容;B代表邏輯判斷滿足時,IF函數得到的結果;C代表邏輯判斷不滿足時,IF函數得到的結果。
  • mysql中count(*)是最慢的嗎?
    會經常使用count函數進行數據行數統計,來滿足我們的業務需求,如電商系統中,總的用戶人數,某個用戶總的下單數等。count函數是什麼:這個問題,對於但凡接觸過資料庫的老鐵來說,實在太簡單了,但是對於筆者來說,學習任何一個事物,應該先對它的定義和概念一個清晰的認識,這樣才能更好的理解和學習它。首先 count函數是sql(Structured Query Language)中的一個聚合函數,用來統計滿足「條件」數據的行數。滿足的條件具體指什麼呢?
  • 根據條件判斷,excel邏輯函數中if函數的應用
    我們在實際工作和生活中,經常會以根據條件進行判斷,比如我們會經常說,假如什麼成立,就會產生什麼結果,if函數就是excel邏輯函數中用於條件判斷真假的函數,下面我們就一起來學習一下。excel邏輯函數中if函數的應用if函數的應用還是比較廣泛的,比如你是一名人民教師,你的日常工作需要給班裡的學生成績進行評級,小於60分的就是不及格,大於或者等於60分的就是及格
  • mysql基礎-mysql中的DQL-常見函數
    每天和小潭一起快樂的學習~    你好,我是在學mysql鑑於篇幅原因,小潭將mysql查詢部分的知識點分成同期不同篇的方式進行學習和介紹。該篇中我們將了解mysql中的常見函數。sql語句選中使用F9可快速提交查詢,使用F12可以格式化sql語句。
  • mysql_data_seek函數詳解
    定義和用法mysql_data_seek()函數的作用是:移動內部結果(行)的指針內部的行指針[internal row pointer]是指:通過mysql_query()函數返回的當前結果所處的行的位置。
  • MySQL 函數相關
    二、聚合函數(常用於GROUP BY從句的SELECT查詢中)    AVG(col)返回指定列的平均值    COUNT(col)返回指定列中非NULL值的個數    MIN(col)返回指定列的最小值    MAX(col)返回指定列的最大值    SUM(col)返回指定列的所有值之和    GROUP_CONCAT(col) 返回由屬於一組的列值連接組合而成的結果
  • 由MySQL字符串函數考慮到的繞過利用
    來自WgpSec Team 成員 f1hgb投稿背景本次文章是在對一次時間盲注時if等函數被ban的時候
  • mysql結果去重和條件查詢where的使用
    昨天介紹了mysql裡面的輸出函數,小編覺得日期函數屬於見的比較多的,mysql怎麼輸出當前時間的,我們可以用到now這個函數;效果如下mysql輸出當前時間下面擴展一下mysql裡面格式化時間戳的常用函數
  • mysql實現php函數explode功能mysql_explode
    我article表中的記錄如下,因為多個關鍵詞存放在一個欄位上,不利於做排序統計操作,例如我想要統計哪個關鍵詞的數量最多就是個大問題了:id keywords1 九陽神功,萬川歸海,橫掃千軍,乾坤大挪移2 殺破狼,落日十三劍
  • MySQL常用的函數
    微信公眾號:PHP在線在使用MySQL的時候,靈活運用函數可以提高開發效率,方便解決一些棘手的問題。本文講解的MySQL常用函數包括常用的字符串函數、數值函數、日期和時間函數、聚合函數等。註:MySQL中處理字符串時,默認第一個字符下標為1,即參數position必須大於等於1,position支持負數,如果為負數則從後面開始截取。
  • 5 分鐘快速掌握 MySQL 函數
    目錄1.MySQL中關於函數的說明概念:類似java、python中的方法,將一組邏輯語句封裝在方法體中,對外暴露方法名;調用:select 函數名(
  • Excel中條件判斷只IF就out錯誤iferror函數實用
    Excel有一類函數是貫徹所有函數嵌套的時候,那就是條件判斷類函數,其中出現的最多的也就是我們的IF條件判斷函數。If條件函數可以運用的範圍也是非常的普遍,除了它還有個條件判斷類函數也是非常的實用,它就是iferror函數,在數據出現錯誤值的時候,iferror函數會比IF更加的好用。