函數是事先經過編譯並存儲在數據庫中的一段sql語句的集合。
MySQL常用函數有:字符串函數、數值函數、日期和時間函數、流程函數以及自定義函數等。
字符串函數
CONCAT(str1,str2,…) 連接字符串
LOWER(str) 轉換成小寫
UPPER(str) 轉換成大寫
LENGTH(str) 返回字符串str的長度
TRIM(str) 去掉str字符串前綴和後綴的空格(和length做個試驗)
LTRIM(str) 去掉str字符串前綴的空格
RTRIM(str) 去掉str字符串後綴的空格
INSERT(str1,x,y,str2) 將str1值從第x開始至y結束替換成str2
REPLACE(str,from_str,to_str) 將str中的from_str替換爲to_str
LPAD(str,len,padstr) 返回str值,並左起由字符串padstr填補len位
mysql> select lpad('server',2,'qq');
+-----------------------+
| lpad('server',2,'qq') |
+-----------------------+
| se |
+-----------------------+
1 row in set (0.27 sec)
mysql> select lpad('server',20,'qq');
+------------------------+
| lpad('server',20,'qq') |
+------------------------+
| qqqqqqqqqqqqqqserver |
+------------------------+
1 row in set (0.00 sec)
RPAD(str,len,padstr) 返回str值,並右起由字符串padstr填補len位
REPEAT(str,len) 將str重複len次
數值函數
ABS(x) 返回絕對值
CEIL(x) 返回大於等於x的最小整數
FLOOR(x) 返回不小等於x的最大整數
MOD(x,y) 返回x/y的模
RAND() 生成0~1之間的隨機浮點數
ROUND(x,y) 返回x四捨五入後有y位小數的值
TRUNCATE(x,y) 返回x截斷爲y位小數的結果
日期函數
CURDATE() 返回當前日期
CURTIME() 返回當前時間
NOW() 返回當前日期和時間
WEEK(date,x) 返回指定日期是一年中的第幾周,x=0(默認)按週日爲一週的第一天,x=1按週一爲一週的第一天
YEAR(date) 返回指定日期的年份
MONTHNAME(date) 返回指定日期的月份名稱
DATE_FORMAT(date,fmt) 返回按字符串fmt格式化的date日期
DATE_ADD(date,INTERVAL expr type) 返回一個日期或時間加上一個時間間隔的值
DATEDIFF(expr1,expr2) 返回expr1-expr2之間的天數
流程函數
IF(expr1,expr2,expr3) 如果expr1爲TRUE(!=0且!=NULL),則返回expr2的值,否則返回expr3的值
IFNULL(expr1,expr2) 如果expr1不爲NULL則返回expr1,否則返回expr2
CASE
WHEN [value1] THEN result1
WHEN [value2] THEN result2
ELSE default
END
如果value1值爲TRUE,則優先返回result1值,如果value2值爲TRUE,則返回result2值,否則返回default值