MySql常用函数
一、数学函数:
ABS():取绝对值
MOD(A,B):取余,等效于A%B
ROUND():取整,四舍五入
CEILING():取整,向上取整
二、字符串函数:
substr( str, 初始位置,取多少位):截取字符串,初始位置从1开始
concat(str1,str2....):字符串的拼接
length(str):取str字符串的长度
trim():将字符串前后的空格去掉
Ltrim():去掉字符串前面的空格
Rtrim():去掉字符串后面的空格
replace(str,旧,新):将字符串str中 “旧” 全部用 “新” 来替换
insert(str,起始位置,长度len,新str):将字符串中起始位置处开始,len长度的子串替换为新str
三、日期和时间函数:
DAYOFWEEK(date):返回日期date的星期索引(1=星期天,2=星期一, …7=星期六)。
WEEKDAY(date):返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)
DAYOFMONTH(date):返回date的月份中的日期,在1到31范围内
DAYOFYEAR(date):返回date在一年中的日数, 在1到366范围内
MONTH(date):返回date的月份,范围1到12。
YEAR(date):返回日期中的年份
时分秒用法相同
日期的加减:
DATE_ADD(date,INTERVAL expr type) ,进行日期增加的操作,可以精确到秒
DATE_SUB(date,INTERVAL expr type) ,进行日期减少的操作,可以精确到秒
SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
返回当前时间:
NOW():以‘YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回当前的日期和时间
CURRENT_DATE:以‘YYYY-MM-DD’或YYYYMMDD格式返回今天日期值,取决于函数在一个字符串还是数字上下文被使用。select CURDATE();
CURRENT_TIME:以‘HH:MM:SS’或HHMMSS格式返回当前时间值。select CURTIME();
四、控制流程函数:
1. case when then else end
方案一:
CASE value
WHEN [compare-value] THEN result
WHEN [compare-value] THEN result
ELSE result
END
方案二:
CASE
WHEN [condition] THEN result
WHEN [condition] THEN result
ELSE result
END
在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。
举个栗子:
方案一:
SELECT age CASE
WHEN age<=18 THEN ‘未成年‘
WHEN age>18 THEN ‘成年人‘
ELSE ‘年龄有误‘
END;
方案二:
SELECT CASE 11
WHEN 1 THEN ‘one‘
WHEN 2 THEN ‘two‘
ELSE ‘more‘
END;
2. IF(expr1,v1,v2)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为v1; 否则返回值则为 v2。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
3. IFNULL(v1,v2)
判null,如果null,则返v2
五、其他常用函数 :
格式化函数:FORMAT(x,n):
将数字x格式化,并以四舍五入的方式保留小数点后n位,结果以字符串形式返回
CAST(x AS type)和CONVERT(x,type)这两个函数将x变成type类型。这两个函数只对BINARY、CHAR、DATE、DATETIME、TIME、SIGNED INTEGER、UNSIGNED INTEGER这些
类型起作用。但两种方法只是改变了输出值的数据类型,并没有改变表中字段的类型