【SQL】SQL函数

📢 前言

  • 函数 是指一段可以直接被另一段程序调用的程序或代码。主要包括了以下4中类型的函数。
  • 字符串函数
  • 数值函数
  • 日期函数
  • 流程函数

🎄 字符串函数

⭐ 常用函数

函数
功能
CONCAT(S1,S2,...Sn)
字符串拼接,将S1S2... Sn拼接成一个字符串
LOWER(str)
将字符串str全部转为小写
UPPER(str)
将字符串 str 全部转为大写
LPAD(str,n,pad)左填充,用字符串padstr的左边进行填充,达到n个字符串长度
RPAD(str,n,pad)
右填充,用字符串 pad str 的右边进行填充,达到 n 个字符 串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str,start,len)返回从字符串strstart位置起的len个长度的字符串

⭐ 示例

☀ 简单操作

  • 📢 值得注意的是trim是去除前后空格不能去掉中间的空格。
  • 📢 substring第一个位置是从1开始,而不是0。
select concat('Hello','Mysql');
select lower('Linux');
select upper('Linux');
select lpad('01',5,'-');
select rpad('01',5,'-');
select trim(' Hello  Mysql ');
select substring('Hello  Mysql ',1,5);

由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如: 1号员 工的工号应该为00001

update test.emp set  workno = lpad(workno,5,'0');

🎄 数值函数

⭐ 常用函数

函数
功能
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模,也就是余数
RAND()
返回0~1内的随机数
ROUND(x,y)
求参数x的四舍五入的值,保留y位小数

⭐ 示例

☀ 简单操作

  • 📢 随机数可以×或者加上一个数让其保持在某个自定义的区间内。
select ceil(1.1);
select floor(1.1);
select mod(7,4);
select rand()*10;
select round(2.345,2);

☀ 通过数据库的函数,生成一个六位数的随机验证码。

select lpad(round(rand()*1000000,0),6,'0');
select rpad(round(rand()*1000000,0),6,'0');

🎄 日期函数

⭐ 常用函数

函数
返回起始时间 date1 和 结束时间 date2 之间的天
功能
CURDATE()
返回当前日期
CURTIME()返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定date的年份
MONTH(date)获取指定date的月份
DAY(date)获取指定date的日期
DATE_ADD(date, INTERVAL expr
type)
返回一个日期 / 时间值加上一个时间间隔 expr 后的
时间值
DATEDIFF(date1,date2)
返回起始时间 date1 和 结束时间 date2 之间的天

⭐ 示例

 ☀ 简单操作

  • 📢date_add 后面增加的类型是时间单位,比如:year,month,day,week,hour,minute,second
  • 📢 并且这个时间可以是负数的。
select curdate();
select curtime();
select now();
select year(now());
select month(now());
select day(now());
select date_add(now(),interval 70 year);
select datediff('2024-10-10','2023-10-09');

☀  查询所有员工的入职天数,并根据入职天数倒序排序。

select name, datediff(now(),entrydate) '天数'  from test.emp order by '天数' desc;

🎄 流程函数

  • 📢 实现条件筛选,从而提高语句的效率。

⭐ 常用函数

函数
功能
IF(value , t , f)
如果 value true ,则返回 t ,否则返回
f
IFNULL(value1 , value2)
如果 value1 不为空,返回 value1 ,否则
返回 value2
CASE WHEN [ val1 ] THEN [res1] ...
ELSE [ default ] END
如果 val1 true ,返回 res1 ...
则返回 default 默认值
CASE [ expr ] WHEN [ val1 ] THEN
[res1] ... ELSE [ default ] END
如果 expr 的值等于 val1 ,返回
res1 ... 否则返回 default 默认值

⭐ 示例

 ☀ 简单操作

select if(false,'ok','error');
select ifnull('Ok','Default');
select ifnull(null,'Default');

 ☀ 查询emp表的员工姓名和工作地址

  • 📢 对于展示要求,如果是北京/上海 ----> 一线城市 , 其他 ----> 二线城市
select
       name,
       (case when (workaddress='北京' or workaddress = '上海') then '一线城市' else '二线城市' end) '工作地址'
from emp;
select name,if((workaddress='北京' or workaddress = '上海'),'一线城市','二线城市') '工作地址' from emp;
select
       name,
       (case when workaddress='北京' then '一线城市' when workaddress = '上海' then '一线城市' else '二线城市' end) '工作地址'
from emp;

统计各个学员的成绩

  • 📢 >=85 优秀
  • 📢 >= 60 及格
  • 📢 <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, 88, 95
), (2, 'Rose' , 23, 66, 90),(3, 'Jack', 56, 98, 76);
  • 注意
  • 📢 这里有个要注意的,当大于等于85匹配,也就是被返回后,将不再参与后续的大于等于60的判断,所有不会影响后续条件的判定。
select 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;

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

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

相关文章

Mongodb基础用法【总结】

关系型数据库和非关系型数据库的区别 关系型数据库 1.在关系型数据库中&#xff0c;数据都是存储在表中的&#xff0c;对存储的内容有严格的要求 2.因为我们在创建表的时候久已经规定了表中的字段 存储的数据类型 是否为空 唯一标识等规则 3.由于操作的都是结构化的数据&#…

一款.NET开源的i茅台自动预约小助手

前言 今天大姚给大家分享一款.NET开源、基于WPF实现的i茅台APP接口自动化每日自动预约&#xff08;抢茅台&#xff09;小助手&#xff1a;HyggeImaotai。 项目介绍 该项目通过接口自动化模拟i茅台APP实现每日自动预约茅台酒的功能&#xff0c;软件会在指定时间开始对管理的用…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第六篇-阶段总结篇】

因为马上就要进入下一个阶段&#xff0c;制作动态编辑体积纹理的模块。 但在这之前&#xff0c;要在这一章做最后一些整理。 首先&#xff0c;我们完成没完成的部分。其次&#xff0c;最后整理一下图表。最后&#xff0c;本文附上正在用的贴图 完善Shader 还记得我们之前注…

HBuilder X 中Vue.js基础使用1(三)

一、 模板语法 Vue 使用一种基于 HTML 的模板语法&#xff0c;使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上。所有的 Vue 模板都是语法层面合法的 HTML&#xff0c;可以被符合规范的浏览器和 HTML 解析器解析。 英文官网: Vue.js - The Progressive JavaScript Fr…

浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系

前言 在OpenStack平台上&#xff0c;采用bcache加速ceph分布式存储的方案被广泛用于企业和云环境。一方面&#xff0c;Ceph作为分布式存储系统&#xff0c;与虚拟机存储卷紧密结合&#xff0c;可以提供高可用和高性能的存储服务。另一方面&#xff0c;bcache作为混合存储方案&…

Turn-it:优化线材重构雕塑制造

&#x1f428;文章摘要abstract 电线雕塑在工业应用和日常生活中都很重要。 本文提出了一种新的制造策略&#xff0c;通过调整目标形状以适应电线弯曲机&#xff0c;然后由人工将其弯曲回目标形状。&#xff08;机器弯曲人工弯曲&#xff09; 该方法通过两阶段弯曲策略实现&a…

力扣——用队列实现栈(C语言)

目录 题目&#xff1a; 原理&#xff1a; 结构体MyStack 出栈void myStackPop(MyStack* obj) 入栈void myStackPush(MyStack* obj, int x) 读取栈顶元素int myStackTop(MyStack* obj) 判断栈空bool myStackEmpty(MyStack* obj) 销毁栈void myStackFree(MyStack* obj) 整…

NewStar CTF 2024 Week1,Week2部分

WP部分学习官方解题思路&#xff0c;这次比赛还是收获满满呀 web方向&#xff1a; headach3 抓包拿到flag 会赢吗 第一关&#xff1a; 查看源码看到flag第一部分和目录 第二关&#xff1a; 查看js文件 revealflag方法传入了一个className参数 <script>async func…

8.three.js相机详解

8.three.js相机详解 1、 认识相机 在Threejs中相机的表示是THREE.Camera&#xff0c;它是相机的抽象基类&#xff0c;其子类有两种相机&#xff0c;分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera&#xff1a; 正投影和透视投影的区别是&am…

燕山大学23级经济管理学院 10.18 C语言作业

燕山大学23级经济管理学院 10.18 C语言作业 文章目录 燕山大学23级经济管理学院 10.18 C语言作业1C语言的基本数据类型主要包括以下几种&#xff1a;为什么设计数据类型&#xff1f;数据类型与知识体系的对应使用数据类型时需要考虑的因素 21. 逻辑运算符2. 真值表3. 硬件实现4…

最大公约数(公式法)

求多个数的最大公约数 采用连续求gcd的方式 题目 ACCODE #include<bits/stdc.h> using namespace std; long long num[4]; int main(){cin>>num[1]>>num[2]>>num[3];sort(num1,num4);// cout<<num[1]<<" "<<num[2]<&…

尚硅谷spark学习

p4 快速上手 -开发环境准备

Java多线程新手指南:从零开始学习多线程创建,有两下子!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴 bug菌&#xff0c;今天又来给大家手把手教学Java SE系列知识点啦&#xff0c;赶紧出来哇&#xff0c;别躲起来啊&#xff0c;听我讲干货记得点点赞&#xff0c;赞多了我就更有动力讲得更欢哦&#xff01;所以呀&…

代码审计-Python Flask

1.Jinjia2模版注入 Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug &#xff0c;模板引擎则使用 Jinja2。jinja2是Flask作者开发的一个模板系统&#xff0c;起初是仿django模板的一个模板引擎&#xff0c;为Flask提供模板支持&#xff0c;由于…

KASan部署、使用与原理分析

文章目录 前言1、概述2、使用方法3、测试用例3.1、检测加载的内核模块3.2、检测调用的内核模块3.3、通过系统调用检测3.4、检测编译到Linux内核中的内核模块 4、工作原理4.1、影子内存&#xff08;Shadow Memory&#xff09;4.2、内存状态&#xff08;Memory States&#xff09…

海南聚广众达电子商务咨询有限公司靠谱吗怎么样?

在当今这个数字化浪潮席卷全球的时代&#xff0c;抖音电商以其独特的魅力成为了众多商家争相入驻的新蓝海。而在这片浩瀚的电商海洋中&#xff0c;如何找到一家既专业又可靠的合作伙伴&#xff0c;成为了众多商家心中的一大难题。今天&#xff0c;我们就来深入剖析一下海南聚广…

爬虫日常实战

爬取美团新闻信息&#xff0c;此处采用两种方法实现&#xff1a; 注意点&#xff1a;因为此处的数据都是动态数据&#xff0c;所以一定要考虑好向下滑动数据包会更新的情况&#xff0c;不然就只能读取当前页即第一页数据&#xff0c;方法一通过更新ajax数据包网址页数&#xf…

转变软件交付方式:通过统一 API 和测试策略提高质量和速度

API 在当今的数字化转型中至关重要&#xff0c;但无缝交付也同样重要。然而&#xff0c;许多组织仍然分散其 API 开发和 UI 测试流程&#xff0c;导致问题检测延迟、发布时间延长&#xff0c;甚至遗漏错误。在快节奏的环境中&#xff0c;这种方法是不可持续的&#xff0c;因为上…

Java调用上传文件接口

以 QAnthing 上传文件&#xff08;POST&#xff09;接口为例&#xff0c;展示Java如何调用上传文件接口。 接口文档如下&#xff1a; QAnthign接口文档地址 上代码&#xff1a; RestTemplate 版 /** * * param url 接口地址 * param filePath 文件本地路径 */ public vo…

【C++】踏上C++学习之旅(三):“我“ 与 “引用“ 的浪漫邂逅

文章目录 前言1. "引用"的概念1.1 "引用"的语法 2. "引用"的特性3. "引用"的使用场景3.1 "引用"做参数3. 2 "引用"做返回值3.2.1 "引用"做返回值时需要注意的点 4. 常引用5. "引用"在底层的实…