当前位置: 首页 > news >正文

SQL学习-unit7(内置函数)

1-数值函数|Numeric Functions

round(a,b):四舍五入数字,b为四舍五入精度,默认不保留小数;

select round(5.73) -- 6 select round(5.7345,2) --5.73

truncate():截断数字;

select truncate(5.7365,2) -- 5.73

ceiling():返回大于或等于这个数字的最小整数;

select ceiling(5.2) -- 6

floor():返回小于或等于这个数字的最大整数;

select floor(5.2) -- 5

abs():计算绝对值;

select abs(-5.2) -- 5.2

rand():用来生成0-1区间的随机浮点数;...

select rand()

数值函数的完整榜单:mysql numeric functions

2-字符串函数|String Functions

length():字符串中的字符数;

select length('sky') -- 3

upper():将字符串转化成大写字母;lower():将字符串转化成小写字母;

select upper('sky'); select lower('SKY')

删除字符串中不需要的空格:

ltrim():left trim(左修整的缩写);

rtrim():right trim(右修整的缩写);

trim():删除所有前导或者尾随空格;

select ltrim(' sky'); select ltrim('sky '); select ltrim(' sky ')

left():返回字符串左侧的几个字符;right():返回字符串右侧的几个字符;

select left('Kindergarten',4); -- 'Kind' select right('Kindergarten',6) -- 'garten'

substring():

字符截断函数;

可以得到一个字符串中任何位置的字符,从1开始编号;

第三个参数时可选的,不指定默认返回从起始位置到字符串最后的所有字符;

select substring('Kindergarten',3,5) -- 'nderg'; select substring('Kindergarten',3) -- 'ndergarten'

locate():返回一个字符的位置或者一串字符第一次出现的位置;查找不分大小写;

select locate('n','Kindergarten'); -- 3 select locate('N','Kindergarten'); -- 3 select locate('q','Kindergarten'); -- 0 select locate('garten','Kindergarten') -- 7

replace():可以替换一个字符或者一串字符;

select replace('Kindergarten','garten','garden') -- 'Kindergarden'

concat():串联两个字符串;

select concat('first','last'); -- 'firstlast'
use sql_store; select concat(first_name,' ',last_name) as full_name from customers

所有字符串函数:mysql string functions

3-MySQL中的日期函数|Date Functions

now():调用当前的日期和时间;

select now() -- '2026-04-23 10:14:22'

curdate():当前日期的缩写(current date),只返回当前日期;

curtime():当前时间的缩写(current time),只返回当前时间;

select curdate(),curtime() -- '2026-04-23', '10:17:39'

year(),month(),day(),hour(),minute(),second():获取当前年份,月份,天数,时刻,分,秒;

都返回整数值;

select year(now()); -- '2026' select month(now()); -- '4' select day(now()); -- '23' select hour(now()); -- '10' select minute(now()); -- '25' select second(now()) -- '24'

dayname(),Monthname():获取字符串格式的星期数,月份;

select dayname(now()); -- 'Thursday' select monthname(now()) -- 'April'

extract():调用这个函数,输入想获取的单位,from关键字,日期时间值;

select extract(year from now()); -- '2026' select extract(day from now()) -- '23'
  • 练习:
select * from orders where year(order_date) = year(now())

4-格式化日期和时间|Formatting Dates and Times

date_format():日期格式函数,要用到两个参数,一个是日期值,一个是格式化字符串;

select date_format(now(),'%y'); -- '26' select date_format(now(),'%Y'); -- '2026' select date_format(now(),'%m %Y'); -- '04 2026' select date_format(now(),'%M %Y'); -- 'April 2026' select date_format(now(),'%M %d %Y') -- 'April 23 2026'

所有格式说明符(%a,%b,...):mysql date format string

time_format():时间格式函数;

select time_format(now(),'%H:%i %p') -- '11:01 AM'

5-计算日期和时间|Calculating Dates and Times

date_add():给日期时间值添加日期成分;

select date_add(now(),interval 1 day); -- '2026-04-24 11:11:07' select date_add(now(),interval 1 year); -- '2027-04-23 11:11:38' select date_add(now(),interval -1 year) -- '2025-04-23 11:12:07'

date_sub():在一个日期时间值上减去日期部分;

select date_sub(now(),interval 1 year) -- '2025-04-23 11:15:01'

datediff():计算两个日期的间隔;

select datediff('2019-01-05','2019-01-01'); -- '4' select datediff('2019-01-05 09:00','2019-01-01 17:00');-- '4' select datediff('2019-01-01 17:00','2019-01-05 09:00') -- '-4'

time_to_sec():计算时间间隔,会返回从零点计算的秒数;

select time_to_sec('09:00'); -- '32400' select time_to_sec('09:00') - time_to_sec('09:02') -- '-120'

6-IFNULL和COALESCE函数|The Ifnull and Coalesce Functions

ifnull():可以用其他内容替换空值;

select order_id, ifnull(shipper_id,'Not assigned') as shipper from orders

将shipper_id列的空值改为Not assigned


coalesce():我们提供一堆值,返回这堆值中的第一个非空值

select order_id, coalesce(shipper_id,comments,'Not assigned') as shipper from orders

coalesce函数中,我们首先想返回shipper_id列的值,如果这个值是空的,就返回comments列的值,如果comments列也是空的,那就返回Not assigned;

  • 小练习:
select concat(first_name,' ',last_name) as customer, ifnull(phone,'Unknown') as phone from customers

7-IF函数|The IF Function

有时候我们需要测试条件,并根据条件的成立与否,返回不同值;

if(expression,first,second):如果输入的表达式(expression)被判定为真,这个函数会返回第一个值(first),否则就会返回第二个值(second);

select order_id, order_date, if( year(order_date) = year(now()), 'Active', 'Archived') as category from orders

用union也可以做,if()更简单:

select order_id, order_date, 'Active' as category from orders where year(order_date) = year(now()) union select order_id, order_date, 'Acchived' as category from orders where not year(order_date) = year(now())
  • 练习:
select product_id, name, count(*) as orders, if(count(*) > 1, 'Many times', 'Once') as frequency from products join order_items using (product_id) group by product_id,name

8-CASE运算符|The CASE Operator

如果我们有好几个表达式需要测试怎么办?

在有多个测试表达式且想要针对每个测试表达式返回不同值的时候,可以使用case运算符;

select order_id, case when year(order_date) = year(now()) then 'Active' when year(order_date) = year(now()) - 1 then 'Last Year' when year(order_date) < year(now()) - 1 then 'Archived' else 'Future' end as category from orders
  • 小练习(之前用union完成):
select concat(first_name,' ',last_name) as customer, points, case when points > 3000 then 'Gold' when points >= 2000 then 'Silver' else 'Bronze' end as category from customers order by points desc
http://www.cnnetsun.cn/news/2056592.html

相关文章:

  • 2026最新|Hermes 接入微信/企业微信/飞书 完整部署教程(亲测可用)
  • 别再乱设DataX的channel和bps了!一份讲透速度控制优先级与优化配置的指南
  • 近似加法器HALOC-AxA设计与图像处理优化
  • JSCJELEC长电长晶原厂原装代理分销经销一级代理分销经销
  • 机器学习中不平衡分类问题的重采样技术解析
  • BOSS直接自动点击未读消息并发送求简历请求
  • GLM-TTS实战案例:用AI语音为你的视频创作增添情感色彩
  • 【VSCode 2026金融安全配置白皮书】:零信任架构下47项关键加固项实测验证(含央行合规对标清单)
  • 别再只会按AutoSet了!手把手教你玩转泰克MSO2000B示波器的触发与采样设置
  • 吊顶里的那根龙骨,后来怎么样了
  • MySQL 同步到目标库后,怎么确认数据一致?NineData 的同步与比对方案
  • 从家庭用电到工业变频:一文搞懂AC-AC变换器的三种核心玩法(相控、斩控、调功)
  • 股市学习心得-股市的一天
  • 顶会论文模块复现与二次创新:顶会 AAAI 2026:Adaptive Frequency Filter(自适应频域滤波)模块在图像去噪中的应用
  • 从‘牛马’到‘老板’:智能体时代的效率革命
  • 基于YOLO26的Apex游戏人物目标检测系统设计与实现(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)
  • 遇水易释氢燃爆,镁合金加工润滑痛点一次性讲透
  • Ubuntu 20.04下,用Anaconda虚拟环境搞定pycairo和PyGObject安装(附清华源加速)
  • 【2026内存安全编码白皮书】:C语言开发者必看的5大零成本迁移路径与3类高危误用规避指南
  • CST案例:利用电流钳(current probe)测试实现电源模块的CE仿真
  • entity dto vo
  • 告别双系统!Win11下用WSL2+Ubuntu 20.04打造无缝AI开发环境(附Anaconda/PyTorch配置)
  • Udio 音频生成 API 集成指南
  • 智慧教育中的个性化学习与教学评估
  • 混合块注意力机制(MoBA)原理与实现详解
  • 国产化即时通讯软件怎么选?BeeWorks 的“全栈信创”答卷
  • 美的智能家电云端依赖的终结:Home Assistant本地网络控制方案
  • 3步解锁音乐自由:qmc-decoder帮你将QQ音乐专有格式转换为MP3/FLAC
  • 【嵌入式C安全适配LMM终极指南】:20年老兵亲授3大不可绕过的内存隔离方案
  • Obsidian Excel插件:一站式表格处理解决方案提升笔记效率90%