MySQL常用函数

日期函数

-- 日期,字符串,数值函数
-- 1.获取系统当前日期、时间
select now(),curdate(),curtime(),sysdate(),current_timestamp(),CURRENT_DATE();
-- 2.星期DAYOFWEEK:星期日是1;weekday:星期日是6 dayname单词
select DAYOFWEEK(now()),WEEKDAY(sysdate()),dayname(now());
-- 3. 获取第几天
select dayofmonth("2003-02-26"),dayofyear(now()),monthname(now());

-- 4.获取时间日期分量
select hour(now()),minute(now()),second(now()),year(now()),month(now()),date(now());
-- 5.将日期时间格式化成我想要的字符串
select DATE_FORMAT(now(),'%Y/%m/%D %H:%i:%s %p %W');
-- 6 .date_add(date,interval express unit单位) date_sub(date,interval express unit单位)  adddate

-- 明天的此时
select adddate(now(),interval 1 day);

select adddate(now(),interval -12 hour);

select now()-adddate(now(),interval 1 day);

字符串函数

-- 1进制转换函数 conv(n ,from_base,to_base )指定->另一种
select conv(12,10,8);
select conv(0xfabc,16,10);
-- 2 concat(v1,v2,v3): 拼接
select ename,job,concat(ename,"|",job) from emp;
-- 3 lpad(str,len总长度,padstr) rpad(str,len,padstr) :左或右填充原来的字符串(右对齐、左对齐)
select lpad(ename,18,'#') from emp;
-- 4 截取子串,mysql下标从1开始
select left('www.baidu.com',9),right('www.baidu.com',3),substring('www.baidu.com',5,5);
-- 5 
select length('www.baidu.com'),length('张三丰');
-- 6
select char_length('www.baidu.com'),character_length('张三丰');

-- 7
select char_length(" abc "),char_length(ltrim(" abc "));
-- 8lower(str)
-- 8 姓名带a的员工信息
select * from emp where ename like '%a%';
-- 9 replace(str,oldStr,newStr)替换
select replace("www.baidu.com","www","cn");
-- 10 使用newStr替换掉str的部分子窜,pos开始的len长度
select insert('你好aaaaassssssssssssss',2,10,'#1235454xxxxxxxxx');

数值函数

-- --------------------数值函数-------
select pow(8,3);
select sqrt(64);
select pi();
select rand();
select rand(1); -- 随机数种子
select truncate(3.234689729,2);
select least(1,2,3,4,5,5,4,1),greatest(1,2,3,4,5,5,4,1);
select mod(10,3);
select ceil(3.14),floor(3.14);
select round(3.15,1)round(3.15,2);
-- 查询每个部门平均工资,两位小数
select deptno ,round(avg(ifnull(sal,0)),2) from emp group by deptno;

-- 排名函数
-- row_number() over(排序、分组)    rank() over()    dense_rand() over()
--    给排序过的
select * from (select a.*,row_number() over(order by sal desc) rn from emp a) t where rn>=4 and rn <=6;
select a.*,rank() over(order by sal desc) rn from emp a;
select a.*,dense_rank() over(order by sal desc) rn from emp a;

-- 每个部门排名 partition by [字段名] 指定分组字段

select a.*,row_number() over(partition by deptno order by sal desc) from emp a;

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值