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 年
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值