mysql常用函数
聚合函数
COUNT(col) 统计查询结果的行数
MIN(col) 查询指定列的最小值
MAX(col) 查询指定列的最大值
SUM(col) 求和,返回指定列的总和
AVG(col) 求平均值,返回指定列数据的平均值
数值型函数
数值型函数主要是对数值型数据进行处理,得到我们想要的结果,常用的几个列举如下,具体使用方法大家可以试试看。
ABS(x) //返回x的绝对值
BIN(x) //返回x的二进制
CEILING(x) //返回大于x的最小整数值
EXP(x) //返回值e(自然对数的底)的x次方
FLOOR(x) //返回小于x的最大整数值
GREATEST(x1,x2,...,xn) //返回集合中最大的值
LEAST(x1,x2,...,xn) //返回集合中最小的值
LN(x) //返回x的自然对数
LOG(x,y) //返回x的以y为底的对数
MOD(x,y) //返回x/y的模(余数)
PI() //返回pi的值(圆周率)
RAND() //返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值
ROUND(x,y) //返回参数x的四舍五入的有y位小数的值
TRUNCATE(x,y) //返回数字x截短为y位小数的结果
字符串函数
字符串函数可以对字符串类型数据进行处理,在程序应用中用处还是比较大的,同样这里列举几个常用的如下:
LENGTH(s) 计算字符串长度函数,返回字符串的字节长度
CONCAT(s1,s2...,sn) 合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个
INSERT(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
LOWER(str) 将字符串中的字母转换为小写
UPPER(str) 将字符串中的字母转换为大写
LEFT(str,x) 返回字符串str中最左边的x个字符
RIGHT(str,x) 返回字符串str中最右边的x个字符
TRIM(str) 删除字符串左右两侧的空格
REPLACE 字符串替换函数,返回替换后的新字符串
SUBSTRING 截取字符串,返回从指定位置开始的指定长度的字符换
REVERSE(str) 返回颠倒字符串str的结果
elt()
ELT(N,str1,str2,str3,…)
如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。
mysql> select ELT(1, 'ej', 'Heja', 'hej', 'foo');
-> 'ej'
mysql> select ELT(4, 'ej', 'Heja', 'hej', 'foo');
-> 'foo'
interval()
小于后面的某个参数,就返回这个参数的前一个位置数字
INTERVAL(N,N1,N2,N3,…)
mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200); //(23小于30,30的位置是4,于是返回3)
-> 3
mysql> SELECT INTERVAL(10, 1, 10, 100, 1000); //(10等于10,10的位置是2,于是返回2)
-> 2
mysql> SELECT INTERVAL(22, 23, 30, 44, 200);
-> 0
通常情况都是与elt一起使用
select elt(interval(age,10,20,30),'0-9','10-19','20-30') as altage,count(*) as num
FROM user GROUP BY altage order by altage desc;
-> altage num
20-30 700635
10-19 100313
0-9 99721
99331
FROM_UNIXTIME() 将时间戳转化为日期时间格式
from_unixtime()
select from_unixtime(1614827889);
2021-03-04 11:18:09
NOW() 获取当前时间
select now();
->now()
2021-03-04 11:27:47
UNIX_TIMESTAMP() 时间格式转为时间戳
select UNIX_TIMESTAMP(now());
->UNIX_TIMESTAMP(now())
1614828608
datediff() 比较的两个时间 返回两个日期的相差天数
不能定位到小时、分钟和秒。
时间大的放前面,小的放后面会返回正数
select datediff('2021-03-01 11:18:0','2021-03-05 11:18:0');
-> -4
TIMESTAMPDIFF() 比较的两个时间
TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND),使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面。
select timestampdiff(day,'2021-03-01 11:19:00','2021-03-05 11:18:00'); //返回3天
select timestampdiff(day,'2021-03-01 11:18:00','2021-03-05 11:18:00'); //返回4天
select timestampdiff(hour,'2021-03-01 11:19:00','2021-03-05 11:18:00'); //相差 95小时
select timestampdiff(minute,'2021-03-01 11:19:00','2021-03-05 11:18:00'); //相差 5759分钟
select timestampdiff(second,'2021-03-01 11:19:00','2021-03-05 11:18:00'); //相差 345540秒
select timestampdiff(year,'2021-03-01 11:19:00','2021-03-05 11:18:00'); //相差 1 年