字符串函数
CONCAT(s1,s2...sn)字符串 s1,s2 等多个字符串合并为一个字符串合并多个字符串
SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString;
CONCAT_WS(x, s1,s2...sn)同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符合并多个字符串,并添加分隔符:
SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;
LEFT(s,n)返回字符串 s 的前 n 个字符
返回字符串 runoob 中的前两个字符:
SELECT LEFT('runoob',2) -- ruRIGHT(s,n)返回字符串 s 的后 n 个字符
返回字符串 runoob 的后两个字符:
SELECT RIGHT('runoob',2) -- ob
SUBSTR(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串
从字符串 RUNOOB 中的第 2 个位置截取 3个 字符:
SELECT SUBSTR("RUNOOB", 2, 3) AS ExtractString; -- UNO
数字函数
FORMAT(x,n)函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。格式化数字 "#,###.##" 形式:
SELECT FORMAT(250500.5634, 2); -- 输出 250,500.56ROUND(x)返回离 x 最近的整数
SELECT ROUND(1.23456) --1
CEIL(x)返回大于或等于 x 的最小整数
SELECT CEIL(1.5) -- 返回2FLOOR(x)返回小于或等于 x 的最大整数
SELECT FLOOR(1.5) -- 返回1TRUNCATE(x,y)返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
SELECT TRUNCATE(1.23456,3) -- 1.234
日期函数
CURDATE()返回当前日期
SELECT CURDATE();-> 2018-09-19CURRENT_DATE()返回当前日期
SELECT CURRENT_DATE();-> 2018-09-19DATE()从日期或日期时间表达式中提取日期值
SELECT DATE("2017-06-15"); -> 2017-06-15DATEDIFF(d1,d2)计算日期 d1->d2 之间相隔的天数
SELECT DATEDIFF('2001-01-01','2001-02-02')-> -32DATE_FORMAT(d,f)按表达式 f的要求显示日期 d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')-> 2011-11-11 11:11:11 AM
高级函数
IF(expr,v1,v2)如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。SELECT IF(1 > 0,'正确','错误') ->正确
CAST(x AS type)转换数据类型字符串日期转换为日期:
SELECT CAST("2017-08-29" AS DATE);-> 2017-08-29
case when 详细讲解
CASE expressionWHEN condition1 THEN result1
WHEN condition2 THEN result2
... WHEN conditionN THEN resultN
ELSE result ENDCASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。SELECT CASE
WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END->1 > 0