【MySQL】MySQL函數

目錄

6.1  MySQL函數簡介

6.2數學函數

6.3  字符串函數

6.4  日期和時間函數

6.5  條件判斷函數

6.6  系統信息函數

6.7  加密函數

6.8  其他函數


6.1  MySQL函數簡介

各類函數從功能方面主要分爲以下幾類:

       數學函數

       字符串函數

       日期和時間函數

       條件判斷函數

       系統信息函數和加密函數

       其他函數

 

6.2數學函數

6.2.1  絕對值函數ABS(x)和返回圓周率的函 數PI()

絕對值函數:ABS(x)

圓周率函數:PI()

 


6.2.2  平方根函數SQRT(x)和求餘函數MOD(x,y)

平方根函數:SQRT(x)

求餘函數:MOD(x,y)


6.2.3  獲取整數的函數CEIL(x)、CEILING(x)和FLOOR(x)

獲取整數的函數CEIL(x)、CEILING(x)向正取整(大)

和FLOOR(x)向負方向取整(小);


6.2.4  獲取隨機數的函數RAND()和RAND(x)

獲取隨機數的函數RAND()和RAND(x),添加參數將作爲種子,產生相同隨機數,參數不同,數不同;


6.2.5  四捨五入函數ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

四捨五入函數ROUND(x)、ROUND(x,y),y是保留的小數位,爲負值則約置零左邊y位,保留至小數點左邊y位;

和TRUNCATE(x,y),截斷小數點往y方向(可負)的幾位數置零,不四捨五入;

 


6.2.6  符號函數SIGN(x)

SIGN(x)返回參數的符號,x的值爲負、零或正時返回結果依次爲-1、0或1。

 

6.2.7  冪運算函數POW(x,y)、POWER(x,y)和EXP(x)

POW(x,y)和POWER(x,y) 返回x的y次乘方的結果值。

EXP(x)返回e的x乘方後的值。

 

6.2.8  對數運算函數LOG(x)和LOG10(x)

LOG(x)返回x的自然對數,x相對於基數e的對數。對數定義域不能爲負數。

LOG10(x)返回x的基數爲10的對數。

 

6.2.9  角度與弧度相互轉換的函數RADIANS(x)和DEGREES(x)

RADIANS(x)將參數x由角度轉化爲弧度。

DEGREES(x)將參數x由弧度轉化爲度。

 

6.2.10  正弦函數SIN(x)和反正弦函數ASIN(x)

SIN(x)返回x正弦,其中x爲弧度值。

ASIN(x)返回x的反正弦,即正弦爲x的值。若x不在-1到1的範圍之內,則返回NULL。

 

6.2.11  餘弦函數COS(x)和反餘弦函數ACOS(x)

COS(x)返回x的餘弦,其中x爲弧度值。

ACOS(x)返回x反餘弦,即餘弦是x的值。若x不在-1到1的範圍之內,則返回NULL。

 

6.2.12  正切函數、反正切函數和餘切函數

TAN(x)返回x的正切,其中x爲給定的弧度值。

ATAN(x)返回x的反正切,即正切爲x的值。

 

6.3  字符串函數

6.3.1  計算字符串字符數的函數和字符串長度的函數

CHAR_LENGTH(str)返回值爲字符串str的所包含字符個數。一個多字節字符算作一個單字符。

LENGTH(str)返回值爲字符串的字節長度,使用utf8編碼字符集時,一個漢字是3個字節,一個數字或字母算一個字節。

 

6.3.2  合併字符串函數CONCAT(s1,s2,…)、CONCAT_WS(x,s1,s2,…)

CONCAT(s1,s2,…)返回結果爲連接參數產生的字符串。

CONCAT_WS(x,s1,s2,…),CONCAT_WS代表CONCAT With Separator,是CONCAT()的特殊形式。第一個參數x是其它參數的分隔符。分隔符的位置放在要連接的兩個字符串之間。

6.3.3  替換字符串的函數INSERT(s1,x,len,s2)

NSERT(s1,x,len,s2)返回字符串s1,其子字符串起始於x位置和長度被字符串s2取代的len字符。

6.3.4  字母大小寫轉換函數

LOWER (str)或者LCASE (str)將字符串str中的字母字符全部轉換成小寫字母。

UPPER(str)或者UCASE(str)將字符串str中的字母字符全部轉換成大寫字母。

 

6.3.5 獲取指定長度的字符串的函數LEFT(s,n)和RIGHT(s,n)

LEFT(s,n)返回字符串s開始的最左邊n個字符。

RIGHT(s,n)返回字符串str最右邊len字符。

 

6.3.6  填充字符串的函數LPAD(s1,len,s2)和
     RPAD(s1,len,s2)

LPAD(s1,len,s2)返回字符串s1,其左邊由字符串s2填補到len字符長度。

RPAD(s1,len,s2)返回字符串str,其右邊被字符串padstr填補至len字符長度。

 

6.3.7  刪除空格的函數LTRIM(s)、RTRIM(s)和TRIM(s)

LTRIM(s)返回字符串s,字符串左側空格字符被刪除。

RTRIM(s)返回字符串s,字符串右側空格字符被刪除。

 

6.3.8  刪除指定字符串的函數TRIM(s1 FROM s)

TRIM(s1 FROM s)刪除字符串s中兩端所有的子字符串s1。

 

6.3.9  重複生成字符串的函數REPEAT(s,n)

REPEAT(s,n)返回一個由重複的字符串s組成的字符串,字符串s的數目等於n。


6.3.10  空格函數SPACE(n)和替換函數REPLACE(s,s1,s2)

SPACE(n)返回一個由n個空格組成的字符串。

SPACE(n)返回一個由n個空格組成的字符串。

 

6.3.11  比較字符串大小的函數STRCMP(s1,s2)

STRCMP(s1,s2)若所有的字符串均相同,則返回0,若根據當前分類次序,第一個參數小於第二個,則返回-1,其它情況返回1。

 

6.3.12  獲取子串的函數SUBSTRING(s,n,len)和
     MID(s,n,len)

SUBSTRING(s,n,len)帶有len參數的格式從字符串s返回一個長度同len字符相同的子字符串,起始於位置n。

MID(s,n,len)與SUBSTRING(s,n,len)的作用相同。

 


6.3.13  匹配子串開始位置的函數

LOCATE(str1,str)、POSITION(str1 IN str)和INSTR(str, str1)3個函數作用相同,返回子字符串str1在字符串str中的開始位置。

 

6.3.14  字符串逆序的函數REVERSE(s)

REVERSE(s)將字符串s反轉,返回的字符串的順序和s字符順序相反。

 

6.3.15  返回指定位置的字符串的函數

ELT(N,字符串1,字符串2,字符串3,...,字符串N)若N = 1,則返回值爲字符串1,若N=2,則返回值爲字符串2,以此類推。若N小於1或大於參數的數目,則返回值爲NULL。

 

6.3.16  返回指定字符串位置的函數FIELD(s,s1,s2,…)

FIELD(s,s1,s2,…)返回字符串s在列表s1,s2,…中第一次出現的位置,在找不到str的情況下,返回值爲0。如果str爲NULL,則返回值爲0。


6.3.17  返回子串位置的函數FIND_IN_SET(s1,s2)

FIND_IN_SET(s1,s2)返回字符串s1在字符串列表s2中出現的位置,字符串列表是一個由多個逗號‘,’分開的自符串組成的字符串。如果s1不在s2或s2爲空字符串,則返回值爲0。如任意一個參數爲NULL,則返回值爲NULL。


6.3.18  選取字符串的函數MAKE_SET(x,s1,s2,…)

MAKE_SET(x,s1,s2,…)返回由x的二進制數指定的相應位的字符串組成的字符串,s1對應比特1,s2對應比特01以此類推。s1,s2...中的NULL值不會被添加到結果中。

 

 

6.4  日期和時間函數

6.4.1  獲取當前日期的函數和獲取當前時間的函數

CURDATE()和CURRENT_DATE()函數作用相同,將當前日期按照‘YYYY-MM-DD’或YYYYMMDD格式的值返回,具體格式根據函數用在字符串或是數字語境中而定。


6.4.2  獲取當前日期和時間的函數

CURRENT_TIMESTAMP()、LOCALTIME()、NOW()和SYSDATE()4個函數的作用相同,返回當前日期和時間值,格式爲‘YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS,具體格式根據函數是否用在字符串或數字語境而定。

 


6.4.3  UNIX時間戳函數

UNIX_TIMESTAMP(date)若無參數調用,則返回一個Unix時間戳(‘1970-01-01 00:00:00’GMT之後的秒數)作爲無符號整數。


6.4.4  返回UTC日期的函數和返回UTC時間的函數

UTC_DATE()函數返回當前UTC(世界標準時間)日期值,其格式爲‘YYYY-MM-DD’或YYYYMMDD,具體格式取決於函數是否用在字符串或數字語境中。

 


6.4.5  獲取月份的函數MONTH(date)和
     MONTHNAME(date)

MONTH(date)函數返回date對應的月份,範圍值從1到12。

MONTHNAME(date)函數返回日期date對應月份的英文全名。

 


6.4.6  獲取星期的函數DAYNAME(d)、
     DAYOFWEEK(d)和WEEKDAY(d)

DAYNAME(d)函數返回d對應的工作日英文名稱,例如Sunday,Monday等。

DAYOFWEEK(d)函數返回d對應的一週中的索引(位置)。1表示週日,2表示週一,...,7表示週六)。

WEEKDAY(d)返回d對應的工作日索引。0表示週一,1表示週二,...6表示週日。

 

6.4.7  獲取星期數的函數WEEK(d)和WEEKOFYEAR(d)

WEEK(d)計算日期d是一年中的第幾周。

WEEKOFYEAR(d)計算某天位於一年中的第幾周,範圍是從1到53。

 

6.4.8  獲取天數的函數DAYOFYEAR(d)和
     DAYOFMONTH(d)

DAYOFYEAR(d)函數返回d是一年中的第幾天,範圍是從1到366。

DAYOFMONTH(d)函數返回d 是一個月中的第幾天,範圍是從1到31。

 


6.4.9  獲取年份、季度、小時、分鐘和秒鐘的函數

DAYOFMONTH(d)函數返回d 是一個月中的第幾天,範圍是從1到31。

QUARTER(date)返回date對應的一年中的季度值,範圍是從1到4。

MINUTE(time)返回time對應的分鐘數,範圍是從0到59。

SECOND(time)返回time 對應的秒數,範圍是從0到59。

 


6.4.10  獲取日期的指定值的函數
     EXTRACT(type FROM d)

EXTRACT(type FROM date)函數所使用的時間間隔類型說明符同DATE_ADD()或DATE_SUB()的相同,但它從日期中提取其部分,而不是執行日期運算

 

6.4.11  時間和秒鐘轉換的函數

TIME_TO_SEC(time)返回已轉化爲秒的time參數。轉換公式爲:小時*3600+分鐘*60+秒。

SEC_TO_TIME(seconds)返回被轉化爲小時、分鐘和秒數的seconds參數值,其格式爲‘HH:MM:SS’或HHMMSS,具體格式根據該函數是否用在字符串或數字語境中而定。

 


6.4.12  計算日期和時間的函數

DATE_ADD(date,INTERVAL expr type)或者ADDDATE(date,INTERVAL expr type) 。

DATE_SUB(date,INTERVAL expr type)或者SUBDATE(date,INTERVAL expr type) 。

ADDTIME(date,expr)

SUBTIME(date,expr)


6.4.13  將日期和時間格式化的函數

DATE_FORMAT(date,format)根據format 指定的格式顯示date值。

 

6.5  條件判斷函數

6.5.1  IF(expr,v1,v2)函數

IF(expr, v1, v2)如果表達式expr是TRUE(expr <> 0 and expr <> NULL),則IF()的返回值爲v1;否則返回值則爲v2。IF()的返回值爲數字值或字符串值,具體情況視其所在語境而定。

 

6.5.2  IFNULL(v1,v2)函數

IFNULL(v1,v2)假如v1不爲NULL,則IFNULL()的返回值爲v1,否則其返回值爲v2。

6.5.3  CASE函數

CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2] [ELSE rn] END

如果expr 等於vn則返回vn後面的rn,如果所有值都不相等,則返回else後的 rn;

CASE  WHEN v1 THEN r1 [WHEN v2 THEN r2] ELSE rn] END

       某Vn值爲true則返回對應的rn,若全爲true,則返回rn;

 

6.6  系統信息函數

6.6.1  獲取MySQL版本號、連接數和數據庫名的函數

VERSION()返回指示MySQL服務器版本的字符串。

CONNECTION_ID()返回當前MySQL服務器當前連接的次數,每個連接都有各自的唯一的ID。

DATABASE()和SCHEMA()函數返回使用utf8字符集的默認(當前)數據庫名。

 

6.6.2  獲取用戶名的函數

USER()

CURRENT_USER

CURRENT_USER():當前用戶

SYSTEM_USER():系統用戶

SESSION_USER():會話用戶

 

6.6.3  獲取字符串的字符集和排序方式的函數

CHARSET(str)返回字符串str自變量的字符集。

COLLATION(str)返回字符串str的字符排列方式。

 

6.6.4  獲取最後一個自動生成的ID值的函數

LAST_INSERT_ID()自動返回最後一個INSERT或UPDATE問詢爲AUTO_INCREMENT列設置的第一個發生的值。

自增的列具有ID號。


6.7  加密函數

6.7.1  加密函數PASSWORD(str)

PASSWORD(str)從原明文密碼str計算並返回加密後的密碼字符串,當參數爲NULL時返回NULL。

 

 6.7.2  加密函數MD5(str)

MD5(str)爲字符串算出一個MD5 128比特檢查和。


6.7.3  加密函數ENCODE(str,pswd_str)

ENCODE(str,pswd_str)使用pswd_str作爲密碼,加密str。使用DECODE()解密結果。


6.7.4  解密函數DECODE(crypt_str,pswd_str)

DECODE(crypt_str,pswd_str)使用pswd_str作爲密碼,解密加密字符串 crypt_str,crypt_str是由ENCODE()返回的字符串。

 


6.8  其他函數

6.8.1  格式化函數FORMAT(x,n)

FORMAT(x,n)將數字x的格式化,並以四捨五入的方式保留小數點後n位,結果以字符串的形式返回。若n爲0,則返回結果不帶有小數部分。

 


6.8.2  不同進制的數字進行轉換的函數

CONV(N, FROM_base, to_base)函數進行數字N進制from_base到to_base進制的進制數間轉換。


6.8.3  IP地址與數字相互轉換的函數

INET_ATON(expr)給出一個作爲字符串的網絡地址的點地址表示,返回一個代表該地址數值的整數。

INET_NTOA(expr)給定一個數字網絡地址(4或8比特),返回作爲字符串的該地址的點地址表示。

 

6.8.4  加鎖函數和解鎖函數

GET_LOCK(str,timeout)

RELEASE_LOCK(str)

IS_FREE_LOCK(str)

IS_USED_LOCK(str)


6.8.5  重複執行指定操作的函數

BENCHMARK(count,expr)函數重複count次執行表達式expr。


6.8.6  改變字符集的函數

CONVERT(... USING ...)帶有USING的CONVERT()函數被用來在不同的字符集之間轉化數據。


6.8.7  改變數據類型的函數

CAST(x , AS type)和CONVERT(x, type)函數將一個類型的值轉換爲另一個類型的值,可轉換的type有:BINARY、CHAR(n)、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。

 

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