MySQL常用判斷函數總結!!看你都用過沒

2021-03-02 MySQL江湖路

 說到if else 你肯定不陌生,這種判斷函數在各種程式語言中是家常便飯,但在編寫SQL語句中,或許你就很少用到了,甚至還沒怎麼玩兒過。

  在MySQL中基於對條件判斷的函數又叫「控制流函數」,用於mysql語句中的邏輯判斷。本文帶大家一起來看一看MySQL中都有哪些常用的控制流函數,以及控制流函數的使用場景都有哪些?

MySQl中常見的控制流(判斷)函數包括以下三種,我們今天也著重來看一看這三種判斷函數都是怎麼玩兒的:

1、case when then else end

2、IF(expr,if_true_expr,if_false_expr)

3、IFNULL(expr1,expr2)


一、函數:CASE WHEN … THEN … ELSE … END

  在SQL語句中,"CASE WHEN … THEN … ELSE … END"是較常見的用來判斷的語句,適用於增刪改查各類語句中,公式如下:

CASE expressionWHEN if_true_expr THEN return_value1WHEN if_true_expr THEN return_value2WHEN if_true_expr THEN return_value3……ELSE default_return_valueEND

1、用在更新語句的更新條件中

示例語句如下:

UPDATE users_info u     SET u.balance = CASE WHEN u.sex ='女' and u.age > 18 THEN u.balance + 10                          ELSE u.balance + 5 end                          WHERE u.create_time >= '2020-01-01'

需要注意的點,Case函數隻返回第一個符合條件的值,剩下的Case when部分將會被自動忽略2、用在查詢語句的返回值中

原測試數據如下:

查詢語句:


3、用在分組查詢語句中

數據如下:

分組查詢SQL:

查詢結果:

二、函數:IF(expr,if_true_expr,if_false_expr)

在mysql中if()函數的用法類似於java中的三目表達式,具體語法如下:

  IF(expr,if_true_expr,if_false_expr),如果expr的值為true,則返回if_true_expr的值,如果expr的值為false,則返回if_false_expr的值。

原數據:

處理sex欄位為字符格式展示;

如果將(1,2)格式數據改為(『男』,『女』)也可以通過IF函數修改(記得先修改列類型),SQL如下:

修改後數據:

mysql> SELECT SUM(IF(sex = '男',1,0)) as boyNum,SUM(IF(sex = '女',1,0)) as girlNum from student;+---+----+| boyNum | girlNum |+---+----+|      6 |       3 |+---+----+1 row in set (0.00 sec)

三、函數:IFNULL(expr1,expr2)

  IFNULL函數是MySQL控制流函數之一,它有兩個參數,兩個參數可以是真實值或表達式,如果expr1不是NULL,則返回第一個參數(expr1)。否則,IFNULL函數返回第二個參數。

原始數據:

將SEX為NULL的數據展示為:『未知』:

附、一張有故事的照片(九)

這張圖片來自08年汶川;
在地震中痛失妻子的男子飽含深情,
不忍將亡妻棄之野外,
將其身體與自己綁在一起,
用摩託車載著她前往當地的太平間。
在極大悲痛的折磨中,
他仍努力要給妻子些許死後的尊嚴。

相關焦點

  • MySQL常用函數介紹
    SELECT語句及其條件表達式都可以使用這些函數,函數可以幫助用戶更加方便的處理表中的數據,使MySQL資料庫的功能更加強大。本篇文章主要為大家介紹幾類常用函數的用法。1.聚合函數聚合函數是平時比較常用的一類函數,這裡列舉如下:2.數值型函數數值型函數主要是對數值型數據進行處理,得到我們想要的結果,常用的幾個列舉如下,具體使用方法大家可以試試看。
  • MySQL常用的函數
    微信公眾號:PHP在線在使用MySQL的時候,靈活運用函數可以提高開發效率,方便解決一些棘手的問題。本文講解的MySQL常用函數包括常用的字符串函數、數值函數、日期和時間函數、聚合函數等。加在字符串開頭,直到字串長度為lengthLTRIM (string2) //去除字符串前端空格REPEAT (string ,count ) //重複count次REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_strRPAD (string ,length ,pad) //在字符串後用pad
  • MYSQL 常用函數
    字符串函數函數功能
  • MySQL最常用分組聚合函數
    常用的組函數:AVG([distinct] expr)求平均值COUNT({*|[distinct] } expr)統計行的數量MAX([distinct] expr)求最大值MIN([distinct] expr)求最小值SUM([distinct] expr
  • mysql常用函數大全
    字符串函數1.字符串連接CONCATSELECT CONCAT('my','sql')2.字符串替換函數insertSELECTINSERT('hi,mysql',4,5,'sql server')3.字符串轉小寫lowerSELECT LOWER('MySql')4.字符串轉大寫upperSELECT UPPER('layui')
  • MySQL常用函數,你真得看看!
    )       # str:要裁剪的字符串 , pos:要裁剪的長度substr(str,pos,len)   # str:要裁剪的字符串 , pos/len:從哪個位置開始裁剪幾位# substring同理instr:返回子串第一次出現的索引,如果沒有則返回0SELECT INSTR('蔡不菜','蔡')        # 輸出 1 (mysql
  • mysql常用sql語句總結
    SELECT column_name(s)FROM table_name1INNER JOIN table_name2ON table_name1.column_name=table_name2.column_name外連結查詢外連接(全部併集)mysql不支持,oricle,sql server都可以。
  • MySQL 常用語法總結
    欄位名間用逗號隔開。  欄位名間的逗號後要加一個空格。  最後一個欄位名後不用逗號。  所有的SQL陳述都以分號";"結束。  例:  mysql> CREATE TABLE test (blob_col BLOB, index(blob_col(10)));  2.創建索引  索引用於對資料庫的查詢。
  • MySQL常用函數學習
    大家都是從學生時代過來的,下面使用學生信息表和成績表來演示上面的SQL函數。MySQL中最常用的函數之一,主要用於對表中的日期和時間數據進行處理。();其他函數MySQL中除了上述介紹的幾類內置函數之外,還有很多其他函數,比如條件判斷函數,系統信息函數。
  • MySQL常用函數整理
    SQL Server的一些常用函數,有需要的也可以一起看一下SQL Server常用函數整理今天繼續分享MySQL的一些常用函數。IFNULL(),它有兩個參數,並且對第一個參數進行判斷。例如SELECT NULLIF(1,1), NULLIF('A','B'), NULLIF(2+3,4+1);MySQL的IF()函數也可以建立一個簡單的條件測試,這個函數有三個參數,第一個是要被判斷的表達式,如果表達式為真,IF()將會返回第二個參數,如果為假,IF()將會返回第三個參數。
  • 帶你深入了解MySQL ifnull()函數
    如果您對MySQL函數感興趣的話,不妨一看,相信對您會有所幫助。MySQL ifnull()函數和nvl()函數類似,但是也有所不同,下面就為您詳細介紹MySQL ifnull()函數 ,希望可以讓您對MySQL ifnull()函數有更深的認識。IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。
  • MySQL中三種條件判斷函數
    【2】IFNULL()該函數則相對比較簡單,從它的語法格式IFNULL(v1,v2)可以看出它只需定義返回值不需定義判斷表達式,因為其函數名本身就是判斷的含義。判斷兩個參數是否為NULL;若兩個參數都不為空,則返回第一個參數值;若第一個為空則返回第二個參數值;兩個參數也是可以封裝更複雜的運算(譬如函數)。
  • 5 分鐘快速掌握 MySQL 函數
    (地板函數)地板函數:在excel,python中均存在這個函數。你就想像一下你家的地板,把這個數字丟到地板上,求的是小於等於這個數字的最大整數。希望大家一定要好好研究這幾種用法,都是很有用的。由於其中有一條記錄是null值,因此使用count()函數計數的時候,會忽略掉null行。    其次,對於count(*)表示的是統計【整個表】有多少行,這個肯定是對原始數據的行數的正確統計,只要整張表某一行有一個列欄位的值不是null,count(*)就會認為該行為1行。當然要是一整行都是null值,你也沒必要插入這條記錄。
  • MySQL 函數相關
    1 常用函數一、數學函數    ROUND(x,y)        返回參數x的四捨五入的有y位小數的值    RAND()        返回0到1內的隨機值,可以通過提供一個參數(種子)使RAND()隨機數生成器生成一個指定的值。
  • excel函數公式:常用高頻公式應用總結(上)
    最近後臺的留言實在是太多了,由於時間關係,沒辦法一一給小夥伴們解答,所以這裡我們總結了小夥伴們問的最多的問題,整理出了10個職場人士最常用的excel公式,希望能幫大家排憂解難,趕緊來看看吧!今天總結了十個使用頻率很高的公式分享給大家,相信學會這十個公式,你也可以在職場上縱橫一番了。公式1:條件計數條件計數在Excel的應用中十分常見,例如統計人員名單中的女性人數,就是條件計數的典型代表。
  • mysql的這幾個坑你踩過沒?真是防不勝防
    但是,筆者遇到過的這些坑不知道你們都經歷過沒?二、有符號和無符號以前我們公司在項目開發之初制定開發規範時,對mysql的int類型欄位定義成有符號,還是無符號問題專門討論過。觀點一:對於能夠確定裡面存的值一定是正數的欄位,定義成UNSIGNED無符號的,可以節省一半的存儲空間。
  • MySQL那些與日期和時間相關的函數
    【IT168 技術】日期函數可能是比較常使用的一種函數。下面介紹一些最為常用的日期函數及一些容易忽略的問題。  1. NOW、CURRENT_TIMESTAMP和SYSDATE  這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。
  • 超全整理,MySQL常用函數
    SQL Server的一些常用函數,有需要的也可以一起看一下SQL Server常用函數整理今天繼續分享MySQL的一些常用函數。IFNULL(),它有兩個參數,並且對第一個參數進行判斷。例如SELECT NULLIF(1,1), NULLIF('A','B'), NULLIF(2+3,4+1);MySQL的IF()函數也可以建立一個簡單的條件測試,這個函數有三個參數,第一個是要被判斷的表達式,如果表達式為真,IF()將會返回第二個參數,如果為假,IF()將會返回第三個參數。
  • 關於mysql中運算符與函數的概述
    運算符是告訴mysql執行特定的算術或邏輯操作的符號,運算符連接著各個表達式中的操作數,其作用是用來指明對操作數進行的運算。mysql字符函數:1.字符串連接函數:2.字符中轉換大小寫函數:3.求字符串長度的函數:4.刪除空格函數:5.截取字符串:6.獲取指定長度的字符串函數:
  • Mysql 手工注入【常規union查詢篇】
    > right()mysql> select right(username,3) from admin limit 0,1; 返回一個字符串在另一個字符串中第一次出現的位置,可嘗試配合上面的字符串截取函數在讀取文件時用