MySQL函數是MySQL數據庫提供的內部函數。這些內部函數可以幫助用戶更加方便的處理表中的數據。本文將簡單的介紹MySQL中一些常見的函數,方便之後查閱。
總結了SQL語句中常見的五種函數,分別是:
字符函數:對字符串、二進制數據或表達式執行操作。
數學函數:對錶中的數據進行算數運算。
日期函數:處理表中的日期和時間。
聚合函數:返回數據的總彙值。
流程控制函數:實現SQL的條件邏輯
字符函數
函數名 | 函數作用 |
---|---|
ASCII(char) | 返回字符的ASCII碼 |
BIT_LENGTH(str) | 返回字符串的比特長度 |
CONCAT(s1,s2) | 拼接字符串 |
CONCAT_WS(sep,s1,s2…,sn) | 將s1,s2…sn連接成字符串,使用sep進行間隔 |
FORMAT(x,n) | 將數字x進行格式化“x,xxx.xx”保留n位小 |
INSERT(str1,x,y,str2) | 將字符串str1從x位置開始,將y個字符長的字符串替換爲str2 |
INSTR(str1,str2) | 返回子串str2第一次在str1中出現的索引,如果找不到返回0 |
LEFT(str,x) | 返回字符串str中最左邊的x個字符 |
LENGTH(str) | 獲取參數值的字節個數 |
LOCATE(str1,str2) | 在str2中查找str1第一次出現的索引 |
LOWER(str)/LCASE(s) | 將其轉換爲小寫 |
LPAD(str1,num,str2) | 用指定的字符str2實現左填充指定長度,如果num小於str1的 字符長度,則從右邊截斷至num字符長度 |
LTRIM(str) | 刪除str前面的空格 |
POSITION(str1 IN str2) | 在str2中查找str1第一次出現的索引 |
REPEAT(str,n) | 將字符串str重複n次,如果n<=0,返回一個空字符串。如果str或者n是NULL,返回NULL |
REPLACE(str1,str2,str3) | 將str1中的str2全部替換爲str3 |
REVERSE(str) | 顛倒字符串 |
RIGHT(str,x) | 返回字符串str中最右邊的x個字符 |
RPAD(str1,num,str2) | 用指定的字符str2實現右填充指定長度,如果num小於str1的字符長度,則從左邊截斷至num字符長度 |
STRCMP(s1,s2) | 比較字符串s1和s2,大於1,等於0,小於-1 |
SUBSTR(str,num1,num2) | 截取從指定索引num1處num2字符長度的字符 |
TRIM(str)/LTRIM(str)/RTRIM(str) | 刪除str兩邊/左/右的空格,(str1,str2)刪除所有的str1 |
UPPER(str)/UCASE(str) | 將其轉換爲大寫 |
數學函數
函數名 | 函數作用 |
---|---|
ABS(x) | 返回絕對值 |
BIN(x) | 返回二進制(OCT返回八進制,HEX返回十六進制) |
CEILING(X) | 返回大於等於x的最小整數值 |
EXP(x) | 返回值e的x次方 |
FLOOR(x) | 返回小於等於x的最大整數值 |
GREATEST(x1,x2,…,xn) | 返回集合中的最大值 |
LEAST(x1,x2,…,xn) | 返回集合中的最小值 |
LN(x) | 返回x的自然對數 |
LOG(x,y) | 返回x的以y爲底的對數 |
MOD(x,y) | 返回模(x-x/y*y) |
ROUND(x) | 四捨五入 |
SQRT(x) | 返回一個輸的方平根 |
TRUNCATE(x,y) | 返回數字x截短爲y位小數的結果 |
POWER(x,y) | 返回x的y次冪 |
SIGN(x) | 返回x的符號,負數-1, |
日期函數
函數名 | 函數作用 |
---|---|
ADDDATE(date,n) /SUBDATE(date,n) | 從date開始加n天的日期 |
ADDTIME(t,n) | 時間t加上n秒的時間 |
CURTIME() | 獲取當前的時間 |
DATE_FORMAT(date,fmt) | 按照指定的fmt格式進行格式化日期 |
DATEDIFF(d1,d2) | 計算指定日期d1與d2之間相隔的天數 |
DAYNAME(date) | 返回date的星期名 |
DAYOFMONTH(date) | 返回date是一月中的第幾天 |
DAYOFWEEK(date) | 返回date是一週中的第幾天 |
DAYOFYEAR(date) | 返回date是一年中的第幾天 |
FROM_UNIXTIME(時間戳) | 時間戳轉日期 |
GETDATE()/CURDATE() | 獲取當前系統的日期 |
HOUR(date) | 返回time的小時值 |
LAST_DAY(date) | 返回指定月份的最後一天 |
MINUTE(date) | 返回time的分鐘值 |
MONTH(date) | 返回date中的月份值 |
MONTHNAME(date) | 返回date的月份名 |
NOW() | 返回當前的日期和時間 |
QUARTER(date) | 返回date在一年中的季度(1~4) |
UNIX_TIMESTAMP(date) | 得到時間戳 |
WEEK(date) | 返回date爲一年中的第幾周(0~53) |
YEAR(date) | 返回date的年份(1000~9999) |
聚合函數
函數名 | 函數作用 |
---|---|
AVG(col) | 返回指定列的平均值 |
COUNT(*) | 返回表中的所有行數 |
COUNT(col) | 返回指定列中非NULL值的個數 |
GROUP_CONCAT(col) | 返回由屬於一組的列值鏈接組合而成的結果(詳解) |
MAX(col) | 返回指定列的最大值 |
MIN(col) | 返回指定列的最小值 |
SUM(col) | 返回指定列的所有值之和 |
流程控制函數
函數名 | 函數作用 |
---|---|
CASE WHEN[test1] THEN [result1]…ELSE[default] | 如果testN爲真,則返回resultN,否則返回default |
CASE [test] WHEN[val1] THEN[result]…ELSE[default]END | 如果test和valN相等,則返回resultN,否則返回default |
IF(test,t,f) | 如果test是真,返回t,否則返回f |
IFNULL(arg1,arg2) | 如果arg1不是空,返回agr1,否則返回arg2 |
NULLIF(arg1,arg2) | 如果arg1=arg2,返回NULL,否則返回arg1 |
上面的一些總結只是目前瞭解到的,作爲一個學習筆記,還有很多沒有總結,會持續更新。歡迎各位批評指正!