首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >sql学习-函数

sql学习-函数

原创
作者头像
云计算-jerry
发布2025-10-10 16:38:23
发布2025-10-10 16:38:23
1220
举报
文章被收录于专栏:mysqlmysql

1、字符串函数

2、数值函数

3、日期函数

4、流程函数

5、总结

#代码演示

代码语言:SQL
复制
#函数
#字符串函数
-- LOWER
SELECT LOWER('hello');

--UPPER
SELECT UPPER('Hello');

--LPAD(str,len,padstr)
SELECT LPAD('01',5,'-');

--RPAD(str,len,padstr)
SELECT RPAD('01',5,'-');

--TRIM([remstr FROM] str)
SELECT TRIM(' Hello Mysql ');

--SUBSTRING(str FROM pos FOR len)
SELECT SUBSTRING('Hello MySQL',1,5);

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

#数值函数
-- CEIL(X)
SELECT CEIL(1.1);
--FLOOR(X)
SELECT FLOOR(1.9);

--MOD(N,M)
SELECT MOD(3,4);

--RAND()
SELECT rand();

--ROUND(X,D)
SELECT ROUND(2.34,2);

--通过数据库的函数,生成一个六位数的随机验证码
SELECT lpad(round(RAND()*1000000,0),6,'0');

#日期函数
--CURDATE()
SELECT CURDATE();
-- CURRENTTIME
SELECT CURTIME();
-- NOW()
SELECT NOW();

--YEAR(date),MONTH(date),DAY(date)
SELECT YEAR(NOW());

SELECT MONTH(NOW());

SELECT DAY(NOW());

--DATE_ADD(date,INTERVAL expr unit)
SELECT DATE_ADD(NOW(),INTERVAL 70 YEAR);

--DATEDIFF(expr1,expr2)
SELECT DATEDIFF('2021-12-01','2021-11-01'); 

--系例:查询所有员工的入职天数,并根据入职天数倒序排序
SELECT name, datediff(CURDATE(),entrydate) as 'entrydays' FROM emp ORDER BY entrydays DESC;

#流程函数
--if
SELECT IF(TRUE,'OK','Error');

--IFNULL(expr1,expr2)
SELECT IFNULL('ok','Default');

SELECT IFNULL('','Default');

SELECT IFNULL(NULL,'Default');

-- case when then ELSE END
--查询emp表员工姓名和工作地址(北京/上海 --> 一线城市,其他-->二线城市)
SELECT
	NAME,
	( case workaddress WHEN '北京' THEN '一线城市' when '上海' then '一线城市' ELSE'二线城市' END) AS '工作地址'
FROM emp;

-- 案例:统计班级各个学员的成绩,展示的规则如下:
-- >=85,展示优秀
-- >= 60,展示及格
-- 否则,展示不及格

CREATE TABLE score(
	id INT COMMENT 'ID',
	NAME VARCHAR(20) COMMENT '姓名',
	math INT COMMENT '数学',
	english int COMMENT '英语',
	chinese int COMMENT '语文'
)COMMENT '学员成绩表';
INSERT INTO score(id,`NAME`,math,english,chinese) VALUES(1,'Tom',67,68,95),(2,'Rose',23,66,90),(3,'Jack',56,98,76);

SELECT 
id,
name,
(case when math >=85 THEN '优秀' WHEN math>=60 THEN '及格' ELSE '不及格' end ) '数学',
(case when english >=85 THEN '优秀' WHEN english>=60 THEN '及格' ELSE '不及格' end )'英语',
(case when chinese >=85 THEN '优秀' WHEN chinese>=60 THEN '及格' ELSE '不及格' end )'语文'
FROM score;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、字符串函数
  • 2、数值函数
  • 3、日期函数
  • 4、流程函数
  • 5、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档