mysql數據庫中的函數根據功能可以劃分為字符函數、數值運算符與函數、比較運算符與函數、日期時間函數、信息函數、聚合函數、加密函數以及自定義函數等。下面將詳細介紹數據庫中的函數
CONCAT()
CONCAT()函數用於字符連接
CONCAT()函數也可用於將一個數據表中的兩個字段的所有記錄進行字符連接
CONCAT_WS()
CONCAT_WS()函數使用指定的分隔符進行字符連接,該函數的第一個參數是指定分隔符
FORMAT()
FORMAT()函數主要用於數字格式化,最終返回一個字符型數字。第一個參數為待格式化的數字,第二個參數為要保留的小數位數
LOWER()
LOWER()函數將字符轉換成大寫字母
UPPER()
UPPER()函數將字符轉換成小寫字母
LEFT()
LEFT()函數用於獲取左側字符
RIGHT()
RIGHT()函數用於獲取右側字符
LENGTH()
LENGTH()函數用於獲取字符串長度
LTRIM()
LTRIM()函數用於刪除前導空格
RTRIM()
RTRIM()函數用於刪除後續空格
TRIM()
TRIM()函數用於刪除前導和後續空格
REPLACE()
REPLACE()函數用於字符串替換
SUBSTRING()
SUBSTRING()函數用於字符串截取,第一個參數是開始截取的起始位置,第二個參數是截取的字符數目
[注意]這裡是從1開始計數的,而不是從0開始的
如果省略第二個參數,則一直截取到字符串的結尾
[NOT] LIKE
[NOT] LIKE用於模式匹配,其中%代表0個或多個字符,_代表任意1個字符。返回1表示匹配,0表示不匹配
CEIL()
CEIL()函數主要用於進一取整(向上取整)
FLOOR()
FLOOR()函數主要用於捨一取整(向下取整)
ROUND()
ROUND()函數主要用於四捨五入,兩個參數分別為浮點數和保留的小數位數
DIV
DIV主要用於整數除法
MOD
MOD主要用於取余數(取模),等同於% ,可以是整數也可以是小數
POWER()
POWER()函數主要用於冪運算
TRUNCATE()
TRUNCATE()函數主要用於數字截取,兩個參數分別為數值和截斷到小數點後n位
[NOT] BETWEEN...AND...
[NOT] BETWEEN...AND...表示[不]在范圍之內
[NOT] IN()
[NOT] IN()表示[不]在列出值范圍內
IS [NOT] NULL
IS [NOT] NULL表示[不]為空
NOW()
NOW()函數返回當前日期和時間
CURDATE()
CURDATE()函數返回當前日期
CURTIME()
CURTIME()函數返回當前時間
DATE_ADD()
DATE_ADD()函數日期變化,可以增加,也可以減少
DATEDIFF()
DATEDIFF()函數日期差值,兩個日期的差值
DATE_FORMAT()
DATE_FORMAT()函數進行日期格式化
CONNECTION_ID()
CONNECTION_ID()返回連接ID(線程ID)
DATEBASE()
DATEBASE()返回當前數據庫名稱
LAST_INSERT_ID()
LAST_INSERT_ID()返回最後插入記錄的ID,當一次性寫入多條記錄時,函數返回的ID為第一條記錄的ID
USER()
USER()返回當前用戶
VERSION()
VERSION()返回版本信息
聚合函數只能用於數據表,不能用於單個數值的計算
下面建立一個test數據表用來測試數據
AVG():平均值 COUNT():計數 MAX():最大值 MIN():最小值 SUM():求和
MD5()
MD5():信息摘要算法,為以後的Web頁面做准備,盡量使用MD5()
PASSWORD()
PASSWORD():密碼算法,通過PASSWORD()修改當前用戶和其他用戶的密碼,修改客戶端自己的密碼
函數可以返回任意類型的值,同樣可以接收這些類型的參數。函數參數和返回值之前沒有必然的聯系
[注意]一個函數最多可以有1024個參數
用戶自定義函數(user-defined function,UDF)是一種對MySQL擴展的途徑,其用法與內置函數相同
自定義函數的兩個必要條件:1、參數;2、返回值
創建自定義函數
CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body
關於自定義函數的函數體
1.函數體可以由合法的SQL語句構成;
2.函數體可以是簡單的SELECT或INSERT語句;
3.函數體如果為復合結構則使用BEGIN...END語句;
4.復合結構可以包含聲明、循環、控制結構。
創建不帶參數的自定義函數
CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H點:%i分:%s秒');
創建帶參數的自定義函數
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) RETURNS FLOAT(10,2) UNSIGNED RETURN (num1+num2)/2;
[注意]如果自定義函數存在符合結構的多個語句,函數體要包含在BEGIN...END內,同時,需要通過DELIMITER將默認的結束符 ; 修改成其他符號,如:// $$ ,以免函數由於語句結尾的 ; 號導致中斷
刪除函數
DROP FUNCTION [IF EXISTS] function_name