MySQL函数

1. 字符串函数

sql 复制代码
-- concat(str1,str2) 字符串拼接
select concat('Hello ','World!');

-- lower(str) 字符串转小写
select lower(concat('Hello ','World!'));

-- upper(str) 字符串转大写
select upper(concat('Hello ','World!'));

-- LPD(str1,n,str2) 填充字符串,从左边给str1填充str2字符串到长度为n
select LPAD('01',5,'0');

-- RPAD(str1,n,str2) 填充字符串,从右边给str1填充str2字符串到长度为n
select RPAD('01',5,'0');

-- trim 去除两边空格,ltrim去除左边空格,rtrim去除右边
select trim(' Hello, World! ');
select ltrim(' Hello, World! ');
select rtrim(' Hello, World! ');

-- substring(str,from,n) 截取字符串,从form开始截取,截取n位
select substring('Hello,Wold!',1,5);

-- 需求
-- 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员工的工号应该为00001
update emp set workno = LPAD(emp.workno,5,'0');
select * from emp;

2. 数值函数

sql 复制代码
-- ceil(double) 向上取整
select ceil(1.1);

-- floor(double)向下取整
select floor(1.9);

-- mod(int,int) 求模(取余数)
select mod(3,4);

-- rand 取0-1的随机数
select rand();

-- round(double,int) 四舍五入保留几位小数
select round(2.345,2);

-- 取0-1的随机数,并保留两位小数
select round(rand(),2);

-- 需求:随机生成一个六位数的验证码
select substring(round(rand(),6),3) as code;
select lpad(round(rand()*1000000,0),6,'0') as code;

3.日期函数

sql 复制代码
-- CURDATE()获取当前日期
select curdate();

-- CURTIME 获取当前时间
select curtime();

-- YEAR,MONTH,DAY 分别获取指定时间的年、月、日
SELECT YEAR(NOW());
SELECT month(NOW());
SELECT day(NOW());

-- date_add(date,INTERVAL int type); 获取指定时间后的70个日期类型
-- 获取当前日期的70天后
select date_add(now(),INTERVAL 70 Day);

-- date_sub(date,INTERVAL int type); 获取指定时间前的70个日期类型
-- 获取当前日期的70天前
select date_sub(now(),INTERVAL 70 Day);

-- DATEDIFF 获取两个指定时间的相差天数
select datediff(now(),'2001-02-04');

-- 需求,查询所有员工的入职天数,并根据入职天数倒序排序
select emp.name,datediff(curdate(),emp.entrydate) as count from emp order by count DESC;

4. 流程函数

sql 复制代码
-- if(表达式,v1,v2)如果表达式为true,返回v1,否则返回v2(三元运算)
select if(true,'OK','NO');
select if(FALSE,'OK','NO');

-- ifnull(v1,v2) 如果v1==null,返回v2
select ifnull('v1','v2');
select ifnull('','v2');
select ifnull(null,'v2');

-- case (字段 )when (值1) then (值2) else (值3) end 判断字段是否是值1,如果值1,显示值2,否则显示值3
-- 需求:查询员工姓名及工作地址,如果工作地址为上海/北京,则显示一线城市,否则显示二线城市
select emp.name,emp.workaddress,
       case emp.workaddress
           when '北京' then '一线城市'
           when '上海' then '一线城市'
           else '二线城市' end as level
from emp;


-- case when (表达式) then 值1 else 值2 end 判断表达式是否为true,如果为true显示值1,否则为值2;
-- 需求:统计班级各个学员成绩,展示规则如下
-- >=85,优秀
-- >=60,及格
select name,
       case
           when score.math >=85 then '优秀'
               when score.math>=60 then '及格'
                   else '不及格' end as '数学',
       case
           when score.english >=85 then '优秀'
               when score.english>=60 then '及格'
                   else '不及格' end as '英语',
       case
           when score.chinese >=85 then '优秀'
               when score.chinese>=60 then '及格'
                   else '不及格' end as '语文'
from score;
相关推荐
2501_941805933 小时前
在大阪智能零售场景中构建支付实时处理与高并发顾客行为分析平台的工程设计实践经验分享
数据库
李慕婉学姐3 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
珠海西格电力4 小时前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
哈里谢顿4 小时前
记录一次sql优化记录
mysql
数据大魔方4 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
Chasing Aurora4 小时前
数据库连接+查询优化
数据库·sql·mysql·prompt·约束
倔强的石头_5 小时前
【金仓数据库】ksql 指南(六)—— 创建与管理用户和权限(KingbaseES 安全控制核心)
数据库
小熊officer5 小时前
Python字符串
开发语言·数据库·python
渐暖°6 小时前
JDBC直连ORACLE进行查询
数据库·oracle
萧曵 丶6 小时前
Next-Key Lock、记录锁、间隙锁浅谈
数据库·sql·mysql·mvcc·可重复读·幻读