[TOC] > [https://www.runoob.com/mysql/mysql-functions.html](https://www.runoob.com/mysql/mysql-functions.html) ## 字符串函数 ### `char_length(s) / character_length(s)` 返回字符换s的字符长度 ### `concat(s1,s2...sn)` 并接字符串 ``` SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS newstring; ``` ### `concat_ws(x, s1,s2...sn)` 带分隔符的并接 ``` SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString; ``` ### `format(x,n)` 将浮点数或整数格式化 `###,###.###` ``` SELECT FORMAT(250500.5634, 2); // 250,500.56 SELECT FORMAT(250500, 3); //250,500.000 ``` ### `insert(s1,x,len,s2)` 替换个字符串 ``` select INSERT("abcdef",1,2,"xy"); //xycdef // 如果替换长度大于替换字符串则返回为空 select INSERT("abcdef",1,4,"xy"); //xyef ``` ### `locate(substr,str)` 子字符串在字符串中的起始位置 ``` select LOCATE("wo","hello word") //7 ``` ### `lcase(s) / lower(s)` 转为小写 ### `ucase(s) / upper(s) ` 转大写 ### `left(s,n) / right(s,n)` 返回前(后)n个字符串 ### `lpad(s1,len,s2) / rpad(s1,len,s2) ` 在开始处填充字符串 ``` select LPAD("abc",5,"x") //xxabc select LPAD("abc",5,"xyz") //xyabc ``` ### `trim(s) / ltrim(s) / rtrim(s)` 去空格 ### `mid(s,n,len) / substring(s,n,len) / substr(s,n,len)` 截取字符串 ### `repeat(s,n)` 对s重复n次 ### `replace(s,s1,s2)` s1 替换为 s2 ``` SELECT REPLACE('abc','ab','x') //xc ``` ### `reverse(s)` 翻转字符串 ### `space(n)` 返回n个空格 ``` select CONCAT("helo",SPACE(2),"word") //helo word ``` ### `strcmp(s1,s2)` 比较字符串是否相等,相等返回0, s1>s2 返回 1 s1<s2 返回 -1 ## 数字函数 ### `abc(n)` 返回绝对值 ### `avg(expression)` 返回某个字段的平均值 ``` SELECT CEIL(1.5) // 返回2 ``` `SELECT AVG(Price) AS AveragePrice FROM Products; ` ### `ceil(n) / ceiling(n) ` 返回大于或等于的最小整数 ### `floor(n)` 返回小于或等于的最大整数 ### `greatest(expr1, expr2, expr3, ...)` 列表最大值 ``` SELECT GREATEST(3, 12, 34, 8, 25); //34 ``` ### `least(expr1, expr2, expr3, ...)` 列表最小值 ### `round(x)` 返回离x最近的整数 ``` SELECT ROUND(0.9) //1 ``` ## 日期函数 ### `curdate() / current_date()` 返回日期 ``` SELECT CURDATE(); //2019-04-22 ``` ### `curtime()` 返回时间 ``` SELECT CURTIME(); //19:59:02 ``` ### `current_timestamp()` 返回日期加时间 ``` SELECT CURRENT_TIMESTAMP() //2018-09-19 20:57:43 ``` ### `date_format(d,f)` 格式化日期 ``` SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r') // 2011-11-11 11:11:11 AM ``` ### `date(s)` 从日期或日期时间中提取日期 ``` select date("2011-11-11 11:11:11") //2011-11-11 ``` ### `day(s)` 获取天 ``` SELECT DAY("2017-06-15"); //15 ``` ### `year(s)` 获取年份 ``` SELECT YEAR("2017-06-15"); ``` ### `DATEDIFF()` 日期相差天数 ``` SELECT DATEDIFF('2001-01-01','2001-02-02') -> -32 ``` ### `dayofweek(d)` 返回日期是星期几 1 星期日,2 星期一,以此类推 ``` SELECT DAYOFWEEK('2011-11-11 11:11:11') //6 ``` ### `dayofyear(d)` ``` SELECT DAYOFYEAR('2011-11-11 11:11:11') //315 ``` ### `today(d)` 时间化天 ``` SELECT TO_DAYS('0001-01-01 01:01:01') //366 select TO_DAYS('20171203') //737031 ``` ## 高级函数 ### `charset(s)` 判断字符串的字符集 `SELECT CHARSET('ABC') //utf8` ### `convert(s using cs)` 把s转为cs字符集 `SELECT CHARSET(CONVERT('ABC' USING gbk) //gbk` ### `case` 语法 ``` CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... WHEN conditionN THEN resultN ELSE result END ``` CASE 表示函数开始,END 表示函数结束。 ``` SELECT CASE   WHEN 1 > 0   THEN '1 > 0'   WHEN 2 > 0   THEN '2 > 0'   ELSE '3 > 0'   END ->1 > 0 ``` ### `current_user() / session_user() / system_user() / user()` 返回当前用户 `select current_user() //root@localhost` ### `COALESCE(expr1, expr2, ...., expr_n)` 返回参数中的第一个非空表达式 `SELECT COALESCE(NULL, NULL, NULL, 'runoob.com', NULL, 'google.com'); -> runoob.com` ### `database()` 返回当前数据库名 ### `IF(expr,v1,v2)` expr 成立返回1 否则返回2 ### `version()` ``` select VERSION() //5.2.1-MariaDB-beta ```