【MySQL】常用内置函数:数值函数 / 字符串函数 / 日期函数 / 其他函数

文章目录

  • 数值函数
    • round():四舍五入
    • ceiling():上限函数
    • floor():地板函数
    • abs():计算绝对值
    • rand():生成0-1的随机浮点数
  • 字符串函数
    • length():获取字符串中的字符数
    • upper() / lower():将字符串转化成大小写
    • trim/ltrim/rtrim:删除字符串中不需要的空格
    • left /right /substr:返回字符串相应位置字符
    • locate:返回第一个字符或一串字符匹配位置
    • replace:替换字符或字符串
    • concat:串联两个字符串
  • 日期函数
    • now() / curdate() / curtime():返回当前的日期和时间 / 返回当前日期 / 返回当前时间
    • year(now()) / month() / day() / hour() / minute() / second() 提取特定日期或时间
    • dayname(now()) / monthname():返回字符串类型的星期和月份
    • extract(day from now()):返回指定的时间或日期
    • 练习1
    • date_format():日期格式函数
    • time_format():时间格式函数
    • date_add():给日期时间值增加日期,写负值也能减
    • date_sub():给日期时间值减去日期,写负值也能加
    • datediff():返回两个日期的天数间隔
    • time_to_sec():返回从零点计算的秒数
  • 其他函数
    • ifnull()
    • coalesce()
    • 练习1
    • if():单一表达式
    • 练习2
    • case运算符:多个表达式
    • 练习3

数值函数

  • 可查看所有的数值函数

round():四舍五入

  • 参数1
select round(5.37)

运行结果
在这里插入图片描述

  • 参数2,可指定四舍五入的精度
select round(5.37,1)

运行结果
在这里插入图片描述

ceiling():上限函数

  • 返回大于或等于这个数字的最小整数
select ceiling(5.1)

运行结果
在这里插入图片描述

floor():地板函数

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

运行结果
在这里插入图片描述

abs():计算绝对值

select abs(-3.5);

运行结果
在这里插入图片描述

rand():生成0-1的随机浮点数

select rand()

运行结果
在这里插入图片描述

字符串函数

  • 可查看所有的字符串函数

length():获取字符串中的字符数

select length('xuwuuuu')

运行结果
在这里插入图片描述

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

select upper('xuwuuuu');

运行结果
在这里插入图片描述

select lower('XUWUUUU')

运行结果
在这里插入图片描述

trim/ltrim/rtrim:删除字符串中不需要的空格

  • ltrim():移除字符串左侧的空白字符或其他预定义字符
select ltrim('   xuwuuu')

在这里插入图片描述

  • rtirm():移除字符串右侧的空白字符或其他预定义字符
select rtrim('xuwuuu   ');

在这里插入图片描述

  • trim():删除所有前导或尾随空格,但不能删除字符串中间的空格
select trim('  xuwuuu  ')

在这里插入图片描述

left /right /substr:返回字符串相应位置字符

  • left():返回字符串左侧的几个字符
select left('xuwuuuuu',3)

在这里插入图片描述

  • right():返回字符串右侧的几个字符
  • substr():字符截取函数,可以得到任何位置的字符;
    • 第二个参数是起始位置,第三个参数是长度;
    • 也可以不写第三个参数,这样就返回从起始位置到字符串最后的所有字符。
select substr('xuwuuuuu',3,2);

在这里插入图片描述

locate:返回第一个字符或一串字符匹配位置

  • 这个函数不区分大小写
  • 返回指定的字符在字符串中第一次出现的位置。
select locate('u', 'xuwuuuu')

在这里插入图片描述

  • 如果指定的字符在字符串中没有,会返回0
select locate('y', 'xuwuuuu')

在这里插入图片描述

  • 还可以搜索一串字符串
  • 同样,要搜索的字符串不存在时,也会返回0
select locate('uuuu', 'xuwuuuu')

在这里插入图片描述

replace:替换字符或字符串

  • 第一个参数:完整的字符串;第二个参数:要被替换掉的字符或字符串;第三个参数:新的字符或字符串
select replace('xuwuuuuu', 'xu', 'st')

在这里插入图片描述

  • 一个字符替换一个字符串也是可以的,一个字符串替换一个字符也可以
select replace('xuwuuuuu', 'xu', 's')

在这里插入图片描述

select replace('xuwuuuuu', 'x', 'st')

在这里插入图片描述

concat:串联两个字符串

select concat('xu', 'wuuuu')

在这里插入图片描述

  • 练习:把表中的名和姓串联起来

在这里插入图片描述

use sql_store;
select concat(first_name, ' ', last_name) as full_name
from customers

日期函数

now() / curdate() / curtime():返回当前的日期和时间 / 返回当前日期 / 返回当前时间

select now(), curdate(), curtime();

在这里插入图片描述

year(now()) / month() / day() / hour() / minute() / second() 提取特定日期或时间

  • 返回整数值
select year(now()), month(now()), day(now()),
       minute(now()), second(now())

在这里插入图片描述

dayname(now()) / monthname():返回字符串类型的星期和月份

  • 返回字符串
select dayname(now()), monthname(now())

在这里插入图片描述

extract(day from now()):返回指定的时间或日期

  • 要定制单位,如年、月、日期、秒等
select extract(day from now()),
       extract(year from now()),
       extract(month from now())

在这里插入图片描述

练习1

  • 筛选当前年份的订单。把当前时间的年份提取出来,再把订单日期的年份提出来,筛选两个年份相等的数据。
use sql_store;
select *
from orders
where year(order_date) = year(now())

date_format():日期格式函数

  • 格式说明符查询连接
    在这里插入图片描述

  • 两个参数。

  • 一个是日期值

  • 一个是格式字符串

    • %y:两位数的年份
    • %Y:四位数的年份
    • %m:两位数的月份
    • %M:字符串的月份
    • %d:获取当前日期
select date_format(now(), '%M %d %Y')

在这里插入图片描述

time_format():时间格式函数

  • 两个参数;一个是时间值,一个是格式字符串。
select time_format(curtime(), '%H:%i %p')

在这里插入图片描述

date_add():给日期时间值增加日期,写负值也能减

  • 想在当前日期时间上增加一天
  • 第二个参数
    • interval 1 day;
    • interval 3 year;
    • interval -1 year;获取过去的时间
select date_add(now(), interval 1 day),
       date_add(now(), interval -3 year)

返回了明天的同一时间(写码当前是2023-11-29),返回3年后的同一时间
在这里插入图片描述

date_sub():给日期时间值减去日期,写负值也能加

select date_sub(now(), interval 4 day),
       date_sub(now(), interval -3 year)

在这里插入图片描述

datediff():返回两个日期的天数间隔

  • 只返回天数的间隔,不考虑时间的间隔
  • 两个时间的顺序调换,会得到正值或负值
select datediff('2023-11-29 22:02', '2022-11-29 21:02'),
       datediff('2022-11-29 22:02', '2023-11-29 21:02')

在这里插入图片描述

time_to_sec():返回从零点计算的秒数

  • 返回从零点计算的秒数
select time_to_sec('00:30'),
       time_to_sec(curtime())

在这里插入图片描述

  • 返回两个时间间隔的秒数
select time_to_sec('22:10') - time_to_sec('22:00')

在这里插入图片描述

其他函数

ifnull()

  • 有些订单的发货id是空值。如果想让用户看到的是“未分配”而不是空值,可以调用ifnull()函数,把发货id替换成别的。
    在这里插入图片描述
use sql_store;
select order_id,
       ifnull(shipper_id, 'Not assigned') as shipper
from orders

在这里插入图片描述

coalesce()

  • 如果参数1是null,就返回参数2;参数2为空,就返回参数3
  • 写一堆参数,coalesce函数会返回这堆参数中第一个非空值。
use sql_store;
select order_id,
       coalesce(shipper_id, comments, 'Not assigned') as shipper
from orders

在这里插入图片描述

练习1

  • 返回客户的姓名和电话,没有电话的显示Unknown
  • concat()函数串联字符串!
select concat(first_name, ' ', last_name) as customer,
       ifnull(phone, 'Unknown')
from customers

在这里插入图片描述

if():单一表达式

  • if(expression,first,second):如果表达式为真,则返回first,否则返回second
  • 把订单分类,如果订单是今年的,就放在“活跃类别”;否则就放入“归档类别”
    • 可以用union,筛选活跃类别的,再筛选归档类别的,用union连接起来
    • 可以用if函数,达到同样效果
select order_id,
       order_date,
       if(year(order_date) = '2019', 'Active', 'Archived') as category
from orders

在这里插入图片描述

练习2

  • count(*)按照product_id进行计数,就能得到每个id对应有多少数据。
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

在这里插入图片描述

case运算符:多个表达式

  • 在有多个表达式且想针对每个表达式返回不同值时,适用case运算符
  • case
    when …… then
    when …… then
    when …… then
    else
    end as ……
select order_id,
       order_date,
       case
           when year(order_date) = '2019' then 'Active'
           when year(order_date) = '2018' then 'Last Year'
           when year(order_date) < '2018' then 'Archived'
           else 'Future'
       end as category
from orders;

练习3

  • 按照积分给客户分为3类。
select concat(first_name, ' ', last_name) as customer,
       points,
       case
           when points > '3000' then 'Gold'
           when points between '2000' and '3000' then 'Sliver'
           when points < '2000' then 'Bronze'
       end as category
from customers
order by points desc
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;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/201288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot+vue的在线考试系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

水果编曲软件FL Studio21最新中文版本2023年最新FL 21中文版如何快速入门教程

水果编曲软件FL Studio介绍 各位&#xff0c;大家晚上好&#xff0c;今天给大家带来最新最新2023水果编曲软件FL Studio 21中文版下载安装激活图文教程。我们一起先了解一些FL Studio 。FL Studio21是目前流行广泛使用人数最多音乐编曲宿主制作DAW软件&#xff0c;这款软件相信…

git stash save untracked not staged

git stash save untracked not staged 如图 解决方案&#xff1a; git stash save "tag标记信息" --include-untracked或者&#xff1a; git stash save -u "tag标记信息" git stash clear清空本地暂存代码_zhangphil的博客-CSDN博客文章浏览阅读486次。…

QDoubleSpinBox的使用示例

QDoubleSpinBox即可以做为数值型输入框使用&#xff0c;也可以使用只读型数据显示框&#xff0c;在作为输入框使用时比QLineEdit有以下几个方面的优势 1.可以设置范围&#xff0c;并且范围精确&#xff0c; 2.输入数据精确&#xff0c;自动屏幕非数值以外的字符。 3.设置步长后…

LeetCode(40)同构字符串【哈希表】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 同构字符串 1.题目 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0…

java开发需要用到的软件,必备软件工具一览

java开发需要用到的软件&#xff0c;必备软件工具一览 如果你对Java编程感兴趣或已经是一名Java开发者&#xff0c;你需要一些必备的软件工具来提高你的生产力和简化开发过程。在本文中&#xff0c;我们将探讨Java开发所需的关键软件工具&#xff0c;并通过具体示例来解释它们的…

Elk:filebeat 日志收集工具和logstash

Elk:filebeat 日志收集工具和logstash Filebeat是一个轻量级的日志手机工具,所使用的系统资源比logstash部署和启动时使用的资源要小得多 Filebeat可以在非java环境使用&#xff0c;他可以代理logstash在非java环境上收集日志 缺点 Filebeat无法实现数据的过滤,一般是结合l…

使用 graph_tool 绘制网络关系图

目标 使用python的graph_tool包&#xff0c;根据以下表格&#xff0c;生成网络关系图。 采样方法大类小类低空遥感解译地面裸土地,人工地面地面影像解译水生植物水葫芦,荷叶,苦草,黑藻,水华,水白菜RTK测量禾本植物狗牙根,华克拉莎,斑茅,苔草,芦苇,芦竹,杂茅RTK测量竹风箱树,马…

注解(概念、分类、自定义注解)

注解基本概念 注解(元数据)为我们在代码中添加信息提供一种形式化的方法&#xff0c;我们可以在某个时刻非常方便的使用这些数据。将的通俗一点&#xff0c;就是为这个方法增加的说明或功能。 作用&#xff1a; 编写文档&#xff1a;通过代码里标识的注解生成文档【生成doc文…

bugku题解记录2

文章目录 哥哥的秘密黄道十二官where is flag一段新闻 哥哥的秘密 给出了一个qq&#xff0c;那就去看看呗 hint里面说 收集空间信息——相册——收集微博信息——相册——解题——相册——提交flag 那看看空间先 盲文&#xff1a; hint&#xff1a;密码时地人 旗帜存在相册里…

聚焦 6G 无线技术——目标和需求

从 3G 到 5G 乃至之后的每一种无线标准&#xff0c;都在设计时加入了推动行业发展的具体目标。例如&#xff0c;4G 专注于以 IP 为中心的灵活语音、数据和视频通信&#xff0c;而 5G 则在此基础上进行了改进。6G 的目标是提供更加无处不在、更高效、更身临其境的无线连接。6G 系…

想要更快的文件传输?看看这些aspera的替代方案吧

随着数据量的增大&#xff0c;文件传输已经成为许多公司和组织日常工作中必不可少的环节之一。而对于大容量、海量数据的传输&#xff0c;普通的传输方式可能甚至无法胜任。Aspera作为一种高效的文件传输协议应运而生&#xff0c;其能够在处理大容量、高速传输方面表现出色。然…

Verilog 入门(一)(Verilog 简介)

文章目录 什么是 Verilog HDL&#xff1f;Verilog 主要能力模块时延数据流描述方式 什么是 Verilog HDL&#xff1f; Verilog HDL是一种硬件描述语言&#xff0c;用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和…

MATLAB | 官方举办的动图绘制大赛 | 第三周赛情回顾

MATHWORKS官方举办的迷你黑客大赛第三期(MATLAB Flipbook Mini Hack)的最新进展&#xff01;&#xff01; 很荣幸前三周都成为了阶段性获奖者~&#xff1a; https://ww2.mathworks.cn/matlabcentral/communitycontests/contests/6/entries/13382 https://ww2.mathworks.cn/mat…

97.STL-查找算法 find

目录 STL-查找算法find 1.基本用法&#xff1a; 2.查找自定义类型&#xff1a; 3.查找范围&#xff1a; STL-查找算法find 在C的STL&#xff08;标准模板库&#xff09;中&#xff0c;find 算法用于在指定范围内查找指定值的元素。 功能描述&#xff1a; 查找指定元素&…

git-4

1.在GitHub上创建个人仓库 现在仓库中有LICENSE文件&#xff0c;但本地没有这个文件&#xff0c;该怎么办呢&#xff1f;往下看 2.把本地仓库同步到GitHub 3.不同人修改了不同文件如何处理&#xff1f; 两个人在同一个分支上&#xff0c;两个人修改了不同文件 其中一人&…

Django路由分发

首先明白一点&#xff0c;Django的每一个应用下都可以有自己的templates文件夹&#xff0c;urls.py文件夹&#xff0c;static文件夹&#xff0c;基于这个特点&#xff0c;Django能够很好的做到分组开发&#xff08;每个人只写自己的app&#xff09;&#xff0c;作为老大&#x…

uniapp 打包的 IOS打开白屏 uniapp打包页面空白

uniapp的路由跟vue一样,有hash模式和history模式, 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。…

谱方法学习笔记-下(超详细)

谱方法学习笔记&#x1f4d2; 谱方法学习笔记-上(超详细) 声明&#xff1a;鉴于CSDN使用 K a T e X KaTeX KaTeX 渲染公式&#xff0c; KaTeX \KaTeX KATE​X 与 L a T e X LaTeX LaTeX 不同&#xff0c;不支持直接的交叉引用命令&#xff0c;如\label和\eqref。 KaTeX \KaT…