【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,casewhen 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,casewhen 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,casewhen points > '3000' then 'Gold'when points >= '2000' then 'Silver'else 'Bronze'end as category
from customers
order by points desc;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认证授权常见方式

认证授权 认证 (Authentication) 和授权 (Authorization)的区别是什么&#xff1f; 说简单点就是&#xff1a; 认证 (Authentication)&#xff1a; 你是谁。授权 (Authorization)&#xff1a; 你有权限干什么。 稍微正式点&#xff08;啰嗦点&#xff09;的说法就是&#x…

k8s-daemonset、job、cronjob控制器 6

Daemonset控制器&#xff08;一个节点部署一个&#xff09; 、 创建Daemonset控制器 控制节点上不能进行部署&#xff0c;有污点 解决方式&#xff1a; 扩容节点&#xff0c;token值过期的解决方法&#xff1a; 回收pod job控制器 需要使用perl镜像&#xff0c;仓库没有&…

GoLang切片

一、切片基础 1、切片的定义 切片&#xff08;Slice&#xff09;是一个拥有相同类型元素的可变长度的序列它是基于数组类型做的一层封装它非常灵活&#xff0c;支持自动扩容切片是一个引用类型&#xff0c;它的内部结构包含地址、长度和容量声明切片类型的基本语法如下&#…

“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展

近年来&#xff0c;国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究&#xff0c;他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合&#xff0c;评价不同类型研究区的生态脆弱特征&#xff0c;其研究内容…

NCo3.1(08) - Nco3 服务器端编程

本篇博文不再重复ABAP调用外部服务器的基础&#xff0c;只介绍 NCo3 开发的过程和要点。需要了解相关知识点的小伙伴们自行参考&#xff1a; SAP接口编程 之JCo3.0系列(06) - Jco服务器端编程 PyRFC 服务器端编程要点 创建项目 新建一个 Console 项目&#xff0c;选择 .Net …

用BootLoader更新S32K144的固件

1、工具&#xff1a;MDK及S32K144的支持包 创芯科技的USB转CAN 及 驱动 Jlink烧写器及驱动 链接&#xff1a;https://pan.baidu.com/s/1jGRdGVEzrO86CpP5UQ2fYQ 提取码&#xff1a;nihd IAP固件升级上位机 2、BootLoader底层文件 a、用MDK打开BootLoader工程 b、更改配置…

网络安全 | 使用人工智能阻止网络攻击

全球范围内分布式拒绝服务 (DDoS) 网络攻击急剧增加&#xff0c;这种数字攻击可以通过大量的互联网流量压垮目标服务器&#xff0c;从而使网站瘫痪。这种攻击每年都会发生数百万起&#xff0c;而且数量和规模都在不断增加。大约三分之一的网站宕机是由于 DDoS 攻击所致。 计算…

RabbitMQ消息的应答

消息的应答机制 消费者完成一个任务可能需要一段时间&#xff0c;如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了&#xff0c;会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息&#xff0c;便立即将该消息标记为删除。在这种情况下&#xff0c;突然有个…

机器学习:领域自适应学习

训练一个分类器是小问题 上难度 训练数据和测试数据不一致&#xff0c;比如训练数据是黑白的&#xff0c;测试时彩色的&#xff0c;结果准确率非常低。 训练数据和测试数据有点差距的时候&#xff0c;能不能效果也能好呢&#xff1f;这就用到了领域自使用domain adptation 用一…

一款LED段码显示屏驱动芯片方案

一、基本概述 TM1620是一种LED&#xff08;发光二极管显示器&#xff09;驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。 二、基本特性 采用CMOS工艺 显示模式&#xff08;8段6位&#xff5e;10段4位&#xff…

【人工智能Ⅰ】实验2:遗传算法

实验2 遗传算法实验 一、实验目的 熟悉和掌握遗传算法的原理、流程和编码策略&#xff0c;理解求解TSP问题的流程并测试主要参数对结果的影响&#xff0c;掌握遗传算法的基本实现方法。 二、实验原理 旅行商问题&#xff0c;即TSP问题&#xff08;Traveling Salesman Proble…

Spark on yarn 模式的安装与部署

任务描述 本关任务&#xff1a; Spark on YARN 模式的安装与部署。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; Spark 部署模式的种类&#xff1b;Spark on YARN 模式的安装。 Spark 部署模式 Spark 部署模式主要分为以下几种&#xff0c;Spark Stand…