MySQL常用函數整理

2021-03-02 SQL資料庫開發

點擊關註上方「SQL資料庫開發」,

設為「置頂或星標」,第一時間送達乾貨

之前已經整理過了SQL Server的一些常用函數,有需要的也可以一起看一下

SQL Server常用函數整理

今天繼續分享MySQL的一些常用函數。

1、數學函數

ABS(x)         BIN(x)         CEILING(x)     EXP(x)         FLOOR(x)       GREATEST(x1,x2,...,xn)                LEAST(x1,x2,...,xn)                   LN(x)           LOG(x,y)        MOD(x,y)        PI()            RAND()          ROUND(x,y)      SIGN(x)         SQRT(x)         TRUNCATE(x,y)   

(提示:可以左右滑動代碼)

2、聚合函數

AVG(X)            COUNT(X)          MIN(X)            MAX(X)            SUM(X)            GROUP_CONCAT(X)   

3、字符串函數

ASCII(char)        BIT_LENGTH(str)    CONCAT(s1,s2...,sn)                    CONCAT_WS(sep,s1,s2...,sn)                   INSERT(str,x,y,instr)                    FIND_IN_SET(str,list)                   LCASE(str)或LOWER(str)                    LEFT(str,x)        LENGTH(s)          LTRIM(str)         POSITION(substr,str)                    QUOTE(str)         REPEAT(str,srchstr,rplcstr)                   REVERSE(str)       RIGHT(str,x)       RTRIM(str)         STRCMP(s1,s2)      TRIM(str)          UCASE(str)或UPPER(str)                    

4、日期和時間函數

CURDATE()或CURRENT_DATE()                    CURTIME()或CURRENT_TIME()                    DATE_ADD(date,INTERVAL int keyword)                   例如SELECT DATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH);
DATE_FORMAT(date,fmt) DATE_SUB(date,INTERVAL int keyword) 例如SELECT DATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);
DAYOFWEEK(date) DAYOFMONTH(date) DAYOFYEAR(date) DAYNAME(date) FROM_UNIXTIME(ts,fmt) HOUR(time)         MINUTE(time) MONTH(date) MONTHNAME(date) NOW()              QUARTER(date)      例如SELECT QUARTER(CURRENT_DATE);
WEEK(date) YEAR(date)         例如,獲取當前系統時間SELECT FROM_UNIXTIME(UNIX_TIMESTAMP());SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE);SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE);SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);
返回兩個日期值之間的差值(月數)SELECT PERIOD_DIFF(200302,199802);
在Mysql中計算年齡:SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)),'%Y')+0 AS age FROM employee;這樣,如果Brithday是未來的年月日的話,計算結果為0。下面的SQL語句計算員工的絕對年齡,即當Birthday是未來的日期時,將得到負值。SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthday, '%Y') -(DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthday, '00-%m-%d')) AS age from employee

5、加密函數

AES_ENCRYPT(str,key)                     AES_DECRYPT(str,key)                     DECODE(str,key)    ENCRYPT(str,salt)  ENCODE(str,key)    MD5()              PASSWORD(str)      SHA()              
例如SELECT ENCRYPT('root','salt') ;SELECT ENCODE('xufeng','key') ;SELECT DECODE(ENCODE('xufeng','key'),'key') ;SELECT AES_ENCRYPT('root','key') ;SELECT AES_DECRYPT(AES_ENCRYPT('root','key'),'key') ;SELECT MD5('123456') ;SELECT SHA('123456') ;

6、控制流函數

CASE WHEN [test1] THEN [result1]...ELSE [default] END                     CASE [test] WHEN [val1] THEN [result]...ELSE [default] END                      IF(test,t,f)        IFNULL(arg1,arg2)   NULLIF(arg1,arg2)   
這些函數的第一個是IFNULL(),它有兩個參數,並且對第一個參數進行判斷。如果第一個參數不是NULL,函數就會向調用者返回第一個參數;如果是NULL,將返回第二個參數。例如SELECT IFNULL(1,2), IFNULL(NULL,10),IFNULL(4*NULL,'false');
NULLIF()函數將會檢驗提供的兩個參數是否相等,如果相等,則返回NULL,如果不相等,就返回第一個參數。例如SELECT NULLIF(1,1), NULLIF('A','B'), NULLIF(2+3,4+1);
MySQL的IF()函數也可以建立一個簡單的條件測試,這個函數有三個參數,第一個是要被判斷的表達式,如果表達式為真,IF()將會返回第二個參數,如果為假,IF()將會返回第三個參數。例如SELECT IF(1<10,2,3),IF(56>100,'true','false');IF()函數在只有兩種可能結果時才適合使用。然而,在現實世界中,我們可能發現在條件測試中會需要多個分支。在這種情況下,它和PHP及Perl語言的switch-case條件例程一樣。
CASE函數的格式有些複雜,通常如下所示:CASE [expression to be evaluated]WHEN [val 1] THEN [result 1]WHEN [val 2] THEN [result 2]WHEN [val 3] THEN [result 3].WHEN [val n] THEN [result n]ELSE [default result]END這裡,第一個參數是要被判斷的值或表達式,接下來的是一系列的WHEN-THEN塊,每一塊的第一個參數指定要比較的值,如果為真,就返回結果。所有的WHEN-THEN塊將以ELSE塊結束,當END結束了所有外部的CASE塊時,如果前面的每一個塊都不匹配就會返回ELSE塊指定的默認結果。如果沒有指定ELSE塊,而且所有的WHEN-THEN比較都不是真,MySQL將會返回NULL。CASE函數還有另外一種句法,有時使用起來非常方便,如下:CASEWHEN [conditional test 1] THEN [result 1]WHEN [conditional test 2] THEN [result 2]ELSE [default result]END這種條件下,返回的結果取決於相應的條件測試是否為真。例如:SELECT CASE 'green' WHEN 'red' THEN 'stop'      WHEN 'green' THEN 'go' END;
SELECT CASE 9 WHEN 1 THEN 'a'WHEN 2 THEN 'b' ELSE 'N/A' END;
SELECT CASE WHEN (2+2)=4 THEN 'OK' WHEN (2+2)<>4 THEN 'not OK' END AS STATUS;
SELECT Name,IF((IsActive = 1),'已激活','未激活') AS RESULT FROM UserLoginInfo;
SELECT fname,lname,(math+sci+lit) AS total,CASE WHEN (math+sci+lit) < 50 THEN 'D' WHEN (math+sci+lit) BETWEEN 50 AND 150 THEN 'C'     WHEN (math+sci+lit) BETWEEN 151 AND 250 THEN 'B'ELSE 'A' END AS grade FROM marks ;
SELECT IF(ENCRYPT('sue','ts')=upass,'allow','deny') AS LoginResultFROM users WHERE uname = 'sue';

7、格式化函數

DATE_FORMAT(date,fmt)                    FORMAT(x,y)       INET_ATON(ip)     INET_NTOA(num)    TIME_FORMAT(time,fmt)                     其中最簡單的是FORMAT()函數,它可以把大的數值格式化為以逗號間隔的易讀的序列。例如SELECT FORMAT(34234.34323432,3) ;SELECT DATE_FORMAT(NOW(),'%W,%D %M %Y %r') ;SELECT DATE_FORMAT(NOW(),'%Y-%m-%d') ;SELECT DATE_FORMAT(19990330,'%Y-%m-%d') ;SELECT DATE_FORMAT(NOW(),'%h:%i %p') ;SELECT INET_ATON('10.122.89.47') ;SELECT INET_NTOA(175790383) ;

8、類型轉化函數

為了進行數據類型轉化,MySQL提供了CAST()函數,它可以把一個值轉化為指定的數據類型。類型有:BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED例如SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0;SELECT 'f'=BINARY 'F','f'=CAST('F' AS BINARY);

9、系統信息函數

DATABASE()         --返回當前資料庫名BENCHMARK(count,expr)                      --將表達式expr重複運行count次CONNECTION_ID()    --返回當前客戶的連接IDFOUND_ROWS()       --返回最後一個SELECT查詢進行檢索的總行數USER()或SYSTEM_USER()                     --返回當前登陸用戶名VERSION()          --返回MySQL伺服器的版本例如SELECT DATABASE(),VERSION(),USER();SELECTBENCHMARK(9999999,LOG(RAND()*PI()));--該例中,MySQL計算LOG(RAND()*PI())表達式9999999次。

相關焦點

  • MySQL常用函數介紹
    前言: MySQL資料庫中提供了很豐富的函數,比如我們常用的聚合函數,日期及字符串處理函數等。
  • MySQL常用的函數
    微信公眾號:PHP在線在使用MySQL的時候,靈活運用函數可以提高開發效率,方便解決一些棘手的問題。本文講解的MySQL常用函數包括常用的字符串函數、數值函數、日期和時間函數、聚合函數等。 ,length ,pad) //在字符串後用pad補充,直到長度為lengthRTRIM (string) //去除字符串後端空格STRCMP (string1 ,string2 ) //逐字符比較兩字串大小,SUBSTRING (str , position [,length ]) //從字符串的position開始,取length個字符,SUBSTR和SUBSTRIN函數功能一樣
  • MYSQL 常用函數
    字符串函數函數功能
  • mysql常用函數大全
    字符串函數1.字符串連接CONCATSELECT CONCAT('my','sql')2.字符串替換函數insertSELECTINSERT('hi,mysql',4,5,'sql server')3.字符串轉小寫lowerSELECT LOWER('MySql')4.字符串轉大寫upperSELECT UPPER('layui')
  • MySQL最常用分組聚合函數
    常用的組函數:AVG([distinct] expr)求平均值COUNT({*|[distinct] } expr)統計行的數量MAX([distinct] expr)求最大值MIN([distinct] expr)求最小值SUM([distinct] expr
  • 超全整理,MySQL常用函數
    點擊關註上方「SQL資料庫開發」,設為「置頂或星標」,第一時間送達乾貨之前已經整理過了SQL Server的一些常用函數,有需要的也可以一起看一下SQL Server常用函數整理今天繼續分享MySQL的一些常用函數。
  • MySQL常用判斷函數總結!!看你都用過沒
    在MySQL中基於對條件判斷的函數又叫「控制流函數」,用於mysql語句中的邏輯判斷。本文帶大家一起來看一看MySQL中都有哪些常用的控制流函數,以及控制流函數的使用場景都有哪些?MySQl中常見的控制流(判斷)函數包括以下三種,我們今天也著重來看一看這三種判斷函數都是怎麼玩兒的:1、case when then else end2、IF(expr,if_true_expr,if_false_expr)3、IFNULL(expr1,expr2)
  • MySQL 函數相關
    1 常用函數一、數學函數    ROUND(x,y)        返回參數x的四捨五入的有y位小數的值    RAND()        返回0到1內的隨機值,可以通過提供一個參數(種子)使RAND()隨機數生成器生成一個指定的值。
  • MySQL那些與日期和時間相關的函數
    【IT168 技術】日期函數可能是比較常使用的一種函數。下面介紹一些最為常用的日期函數及一些容易忽略的問題。  1. NOW、CURRENT_TIMESTAMP和SYSDATE  這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。
  • mysql_data_seek函數詳解
    定義和用法mysql_data_seek()函數的作用是:移動內部結果(行)的指針內部的行指針[internal row pointer]是指:通過mysql_query()函數返回的當前結果所處的行的位置。
  • MySQL常用函數,你真得看看!
    (實參列表)【from 表】    【】中內容可省略正文: 字符函數:length:獲取字節個數(utf-8 一個漢字為3個字節,gbk為2個字節)SELECT LENGTH('cbuc')    # 輸出 4SELECT LENGTH('蔡不菜cbuc')   # 輸出13concat:拼接字符串SELECT CONCAT
  • mysql實現php函數explode功能mysql_explode
    table temp_keys(id int(10) primary key auto_increment,keystr varchar(255));新建一個自定義函數mysql_explode,將"獨孤九劍,萬劍歸宗,乾坤大挪移"這樣的字符串以逗號為分隔符以多條記錄的形式存入資料庫等同於一下子完成了如下操作:insert into temp_keys values(null,'獨孤九劍');insert into temp_keys
  • MySQL常用函數學習
    下面簡單介紹一下MySQL中包含的幾類常用函數。聚合函數聚合函數可實現根據一組數據求出一個值,聚合函數的結果值只根據選定數據行中非NULL值進行計算,NULL值被忽略。下面介紹一下常用的幾個字符串函數。UPPER(s)和UCASE(s)函數UPPER(s)和UCASE(s)函數均可用於將字符串s中的所有哦字母變成大寫字母。
  • mysql隨機函數的例子
    mysql隨機函數的例子,用過mysql的同學都知道rand()函數是最最常見的,要實現隨機數的功能,還非得藉助rand(),它的作用是產生0到1直接的隨機數,下面就列出幾個常見的用例。--或者select floor(rand()*270+250)隨機250到520的數round是四捨五入,floor是向下取整生成隨機的11位手機號碼,利用自定義函數來實現
  • 關於mysql中運算符與函數的概述
    運算符是告訴mysql執行特定的算術或邏輯操作的符號,運算符連接著各個表達式中的操作數,其作用是用來指明對操作數進行的運算。mysql字符函數:1.字符串連接函數:2.字符中轉換大小寫函數:3.求字符串長度的函數:4.刪除空格函數:5.截取字符串:6.獲取指定長度的字符串函數:
  • 帶你深入了解MySQL ifnull()函數
    微信公眾號:PHP在線下文為您介紹的MySQL ifnull()函數 功能和nvl()函數類似,
  • Mysql常用的增刪改查語法
    查詢的基本語法select 列名1 [as] [列別名],列名2 from 表1 [as] [表別名] [left] join 表2 on 連接條件 [left] join 表3 on 連接條件 where 檢索條件(不可用統計函數) group by 分組列1,列2 having 檢索條件(可用統計函數
  • 由MySQL字符串函數考慮到的繞過利用
    來自WgpSec Team 成員 f1hgb投稿背景本次文章是在對一次時間盲注時if等函數被ban的時候
  • MySQL 常用語法總結
    例:  mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name;  mysql> select college, region, seed from tournament  ORDER BY region, seed;  mysql
  • MySQL字符串截取 和 截取字符進行查詢
    通過mysql自帶的一些字符串截取函數,對數據進行處理,下面是我整理的字符串截取 和 截取字符進行查詢。一、MySQL中字符串的截取MySQL中有專門的字符串截取函數:其中常用的有兩種:substring_index(str,delim,count) 和concat 1.substring_index(str,delim,count) 函數的使用較為普遍