MySQL函数讲解(谓词、CASE)

目录

MySQL常见函数

字符串函数 进行字符串操作的函数

算术函数 进行数值计算的函数

日期函数 进行日期操作的函数

转换函数 进行数据类型和值转换的函数

流程函数  进行条件删选

聚合函数 进行数据聚合的函数

谓词 一般用于条件判断


什么是函数

函数指一段可以直接被另一段程序调用的程序或代码

MySQL常见函数

字符串函数 进行字符串操作的函数

MySQL常用的内置 字符串函数如下

CONCAT(S1,S2……Sn)          字符串拼接函数,将S1,S2……Sn拼接为一个字符串

LENGTH(str)                        字符串长度,显示出字符串中包含多少个字符

LOWER(str)                         将字符串str全部转为小写

UPPER(str)                          将字符串str全部转为大写

REPLACE(str1,str2,str3)        字符串替换,将str1中的str2部分替换为str3

LPAD(str,n,pad)                   左填充,用字符串pad对str的左边进行填充,使得str达到n个字符串长度

RPAD(str,n,pad)                  右填充,用字符串pad对str的右边进行填充,使得str达到n个字符串长度

TRIM(str)                             去掉字符串的头部和尾部的空格

SUBSTRING(str,start,len)      返回字符串str从start位置起的len个长度的字符串(字符串的索引是从1开始的,而不是0)

update staff1 set number lpad(number,8,'0'); #修改number字段值,使用字符串”0”对其左填充,使得number达到8个字符串长度(注意:number的数据类型为varchar)

算术函数 进行数值计算的函数

MySQL常用的内置 算术函数如下

+(加法)、-(减法)、*(乘法)、/(除法)

ABS(x)                   对x取绝对值

MOD(x,y)              返回x/y的模(余数)

RAND()                 返回0~1内的随机数

ROUND(x,y)          求参数x的四舍五入的值,保留y位小数

CEIL(x)                  对x向上取整

FLOOR(x)              对x向下取整

select round(rand()*100000,0);   #随机生成5位数的验证码     如果产生的小数0.012345,生成的验证码就只有4位数1234,因此需要补0
select lpad(round(rand()*100000,0),5,'0')#补0

日期函数 进行日期操作的函数

MySQL常用的内置 日期函数如下

CURDATE()           返回当前日期(年月日)

CURTIME()            返回当前时间

NOW()                  返回当前日期和时间

YEAR(date)           获取指定date(年月日)的年份

MONTH(date)       获取指定date(年月日)的月份

DAY(date)             获取指定date(年月日)的天数

DATE_ADD(date , INTERVAL expr type)     在指定date(年月日)上增加expr(expr可以是年/月/日,具体是什么类型由type决定)

DATEDIFF(date1 , date2)     返回起始时间date1和结束时间date2之间的天数(date1-date2)

select date_add(now(),interval 20 day );    #当前日期的20天之后的日期(month为月,year为年)
select name,datediff(curdate(),entrydate) as 'date' from staff1 order by date desc;    #根据入职时间(entrydate)推算出入职天数,并按照倒序排序

转换函数 进行数据类型和值转换的函数

CAST(数据1 AS 数据类型1)      将数据1转为数据类型1

COALESCE(数据1 , 数据2 ,…… )

主要由两个用途:1、将NULL替换为其他的值

2、返回此数据列表中第一个非null表达式的值

select cast('001' as signed integer); #将字符串“001”转换为有符号的整数,显示结果为1
select coalesce(number,0) from staff1;   #查询staff1表的number字段,并将此字段的NULL值替换为0
select coalesce(number,age,0) from staff1; #查询staff1表的number字段;当numbernullage不为null时,number返回age的值;当numberage都为null时,返回0;当number为非null时,返回真实值

流程函数  进行条件删选

流程函数一般在SQL语句中实现条件筛选,从而提高语句的效率

MySQL常用的内置 流程函数如下

如果value(条件表达式)为true,则返回t,否则返回f

IF(vaule , t , f)                     

如果value1(可以是某个记录)不为空,则返回value1,负责返回value2

IFNULL(value1 , value2)      

如果val1为true,则返回res1;val2为true,返回res2;否则返回default

CASE WHEN [ val1 ] THEN [res1] WHEN [val2] THEN [res2] …… ELSE [default] END

如果espr的值等于val1,返回res1;espr的值等于val2,返回res2;否则返回default

CASE [expr] WHEN [val1] THEN [res1]  WHEN [val2] THEN[res2] …… ELSE [default] END

select name,(case origo when '重庆' then '新一线城市' else '非一线城市' end) from staff1; #查询staff1表的name和工作城市字段,如果工作城市为重庆,则显示为新一线城市,其余为非一线城市

聚合函数 进行数据聚合的函数

聚合函数的使用在DQL的分组查询有介绍

将一列数据作为一个整体,进行纵向计算(所有NULL值不参与计算)

count     统计数量(一列有多少个值)

max        最大值(一列的最大值)

min        最小值(一列的最小值)

avg         平均值(一列的平均值)

sum        求和(一列的所有数值求和)

聚合函数使用格式

SELECT 聚合函数 (字段列表) AS [别名] FROM 表名 [WHERE条件列表];

select COUNT(*) from emp;   #统计这个表有多少行(由于Null不参与统计,可能每个列的统计数值不一致,其中会取最大值作为结果返回)
select max(age) from emp;   #统计age的最大值
select avg(age) from emp;   #统计age的平均值

谓词 一般用于条件判断

谓词的使用在DQL的条件查询有介绍

谓词,全名为比较谓词;是一种需要满足返回值为真值True的函数

BETWEEN … AND …     在某个范围之内(左闭右闭)

IN(…)                           …为多个信息,in(…)表示只要满足…中的某个信息就算匹配,为真值

NOT IN(…)                   …为多个信息,只要不满足…的所有信息就算匹配,为真值

LIKE 占位符               模糊匹配(_表示匹配单个字符、%表示匹配任意字符)(OR的简便用法)

IS NULL                       表示NULL值

IS NOT NULL               表示非NULL值

select * from staff1 where gender is null ;     #查询gendernull,并将其对应的所有字段的值都显示出来
select * from staff1 where gender is not null ; #查询gender为非null,并将其对应的所有字段的值都显示出来
select * from staff1 where gender in ('','') ;  #查询性别为男、或者性别为女的信息,并将其对应的所有字段的值都显示出来
select * from staff1 where name like '__'  ;      #查询名称为2个字符信息,并将其对应的所有字段的值都显示出来
select * from staff1 where number between 20000100 and 20000102 #查询number2000010020000102之间对应的信息,并将其对应的所有字段的值都显示出来

注意事项

对于IN来说,如果此运算符的两侧有一个为NULL,则返回结果只能是NULL或1;如果找不到匹配项则返回NULL;如果找到匹配项,则返回1;

对于NOT IN来说,如果此运算符的两侧有一个为NULL,则返回结果只能是NULL或0;如果找不到匹配项则返回NULL;如果找到匹配项,则返回0;

select null in (1,3) , null in (1,3,null); #结果为null  null
select 10 in (1,null), 10 in (null,10); #结果为null  1
select 10 in (1,20), 10 in (1,10);      #结果为0  1select null not in (1,3) , null not in (1,3,null); #结果为null  null
select 10 not in (1,null), 10 not in (null,10); #结果为null  0
select 10 not in (1,20), 10 not in (1,10);      #结果为1 和 0

MySQL基础语法(DDL、DQL、DML、DCL)_静下心来敲木鱼的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/131913031?spm=1001.2014.3001.5502

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

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

相关文章

第5集丨ES6 江湖 —— 函数扩展

目录 一、箭头函数1.1 基本用法1.2 与变量解构结合使用1.3 表达更加简洁1.4 rest 参数与箭头函数结合1.5 注意点1.6 this对象1.6.1 利于封装回调函数1.6.2 练习 1.7 arguments 、 super、 new.target1.8 call() 、 apply() 、 bind() 二、rest 参数2.1 rest 参数代替 arguments…

git常用命令总结

文章目录 1. 创建仓库和初始化2. 添加和提交更改3. 分支管理4. 查看状态和历史5. 撤销更改6. 远程仓库 当使用 Git 进行版本控制时,以下是一些常用的 Git 命令的详细总结: 1. 创建仓库和初始化 git init: 在当前目录创建一个新的 Git 仓库。执行后会在当…

【C++】-多态的语法细节详解

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

android 高版本sd卡目录读写权限

1、从安卓11不允许访问sd目录,官方说明如下: https://developer.android.com/about/versions/11/privacy/storage?hlzh-cn 2、使用MediaStore方法 一手遮天 Android - 存储: Android 11 通过 MediaStore 管理文件 - webabcd - 博客园 (cnblogs.com) …

GPT-3.5:ChatGPT的奇妙之处和革命性进步

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

苹果开发“Apple GPT”AI科技迎来新格局

根据彭博社的马克・古尔曼(Mark Gurman)报道,苹果内部正在开发“Apple GPT”人工智能项目,足以媲美 OpenAI 的 ChatGPT ,预计明年推出。就在彭博社消息发出之后,苹果股价上涨了2.3%,市值顶峰时增…

Auspiciousness

登录—专业IT笔试面试备考平台_牛客网 题目大意:有一个含有2n张牌的牌堆,当手牌为空时, 从牌堆顶抽一张牌,然后猜牌堆顶的牌和手牌顶的牌的大小关系,并抽牌,如果猜对了继续循环,否则游戏直接结…

利用事件委托和冒泡 判断点击了哪个元素或该元素的子级元素

概述&#xff1a; 通过 event.composedPath() 拿到事件冒泡路径&#xff0c;再循环匹配 获取所需的dom <template><div click"handleClick"><div class"child child1"><button>Click Me</button><span>Click Me1<…

题目4 命令执行(保姆级教程)

url&#xff1a;http://192.168.154.253:84/ #打开http://XXX:81/&#xff0c;XXX为靶机的ip地址 审题 1、打开题目看到有一个提示&#xff0c;此题目需要通过利用命令执行漏洞执行Linux命令获取webshell&#xff0c;最后从根目录下key.php文件中获得flag 2、开始答题 第一步&…

Nginx在springboot中起到的作用

面试时这样回答&#xff1a; 在Spring Boot项目中使用Nginx可以有以下用途&#xff1a; 1. 反向代理&#xff1a;Nginx可以作为反向代理服务器&#xff0c;将外部请求转发到后端的Spring Boot应用&#xff0c;并可以实现负载均衡、高可用、缓存等功能&#xff0c;提高系统的性…

css设置八等分圆

现需要上图样式的布局&#xff0c;我通过两张向右方的图片&#xff0c;通过定位和旋转完成了布局。 问题&#xff1a; 由于是通过旋转获取到的样式&#xff0c;实际的盒子是一个长方形&#xff0c;当鼠标移入对应的箭头时选中的可能是其他盒子&#xff0c;如第一张设计稿可以看…

C++ make_shared pros and cons

高效内存分配 std::shared_ptr<Node> ptr(new Node);上面的代码存在两次内存分配 new Node为ptr分配控制块的内存用于存放引用计数等信息 如果使用std::make_shared只会存在一次内存分配&#xff0c;它会一次性申请足够大的空间用于存储Node和控制块 异常安全 void …

Ngrok 的绝佳替代品,内网穿透神器 Serveo

什么是 Serveo Serveo 是一个免费的内网穿透服务&#xff0c;Serveo 可以将本地计算机暴露在互联网上&#xff0c;官方声称其为 Ngrok 的绝佳替代品。 Serveo 其最大优点是使用现有的 SSH 客户端&#xff0c;无需安装任何客户端软件即可完成端口转发。 Serveo 工作原理很简单…

解密数字孪生:解决实际问题的神奇技术

数字孪生是一种将现实世界与数字世界相连接的创新技术&#xff0c;通过将实际物体或系统的数据和行为模拟到数字平台上&#xff0c;实现真实与虚拟之间的交互和信息共享。数字孪生的应用不仅仅局限于虚拟现实&#xff08;VR&#xff09;和仿真领域&#xff0c;它在解决实际问题…

Socket发送数据---winsock库和boost库

一个是通过winsock库提供的api实现,一个是boost库实现,两个方法都可以,因为项目是vc++6.0实现的,不支持boost库,只能使用winsock库,vc++6.0太老,局限性大。 通过Winsock库提供的API 通过UDP #include<winsock2.h> #include<vector> #include<WS2tcpip.h…

泰晓科技发布 Linux Lab v1.2 正式版

导读近日消息&#xff0c;Linux Lab 是一套用于 Linux 内核学习、开发和测试的即时实验室&#xff0c;官方称其“可以极速搭建和使用&#xff0c;功能强大&#xff0c;用法简单”。 自去年 12 月份发布 Linux Lab v1.1 后&#xff0c;v1.2 正式版目前已经发布于 GitHub 及 Gite…

为什么 Linux 内核协议栈会丢弃 SYN 数据包

最近了解到 SYN 数据包丢弃的问题&#xff0c;网上有一些资料&#xff0c;这里记录分享一下。 serverfault上的重要信息 tcp - No SYN-ACK Packet from server - Server Fault 信息如下&#xff1a; My embedded system with LwIP is the client and I have server1 and ser…

文艺类《匠心》简介及投稿要求

文艺类《匠心》简介及投稿要求 《匠心》期刊简介&#xff1a; 主管单位&#xff1a;内蒙古画报社 主办单位&#xff1a;内蒙古画报社 国际刊号&#xff1a;ISSN:1672-9099 国内刊号&#xff1a;CN:15-1383/J 发行周期&#xff1a;月刊;收录网站&#xff1a;中国知网收录 …

LiveGBS流媒体平台GB/T28181常见问题-TOKEN有效期是多久如何设置token有效期StreamToken和URLToken

LiveGBS中TOKEN有效期是多久如何设置token有效期StreamToken和URLToken 1、获取TOKEN2、TOKEN有效期3、默认token有效期3、自定义token加密key3.1、token_key3.2、stream_token_key 4、如何配置一直有效的token4.1、URLToken4.2、StreamToken 5、动态有效期6、流地址鉴权开启后…

git的使用

git使用 Git操作基本指令&#xff1a;分支操作&#xff1a;操作远程仓库&#xff1a;文件操作比较文件差异删除文件撤销文件重命名文件 操作标签SSH密钥git错误示例1、git status&#xff08;或任何其他git命令&#xff09;然后会出现fatal: Not a git repository (or any of t…