SQL函数

news2024/9/25 13:26:06

SQL函数

DATE_SUB()函数

1.1函数语法定义

img

1.2函数实际应用:

语法:

  • 获取当前日期:select curdate()
  • 获取当前日期前一天:select date_sub(curdate(),interval 1 day)
  • 获取当前日期后一天:select date_sub(curdate(),interval -1 day)

案例:

  • 当前日期的前三十天和后三十天 (DATE_SUB函数本身是减法,用负数就是加)
SELECT * from user 
where create_time between DATE_SUB(NOW(),INTERVAL 30 day) and DATE_SUB(NOW(),INTERVAL -30 day)
  • 组合DATE_FORMAT格式化等函数使用
SELECT * from  second_customer_manager_his WHERE delete_flag='0' AND back_cup_date BETWEEN '2023-02-22' and DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 1 day),'%Y-%m-%d');

  • 示例:年、月、日等时间单元

select now();-- 当前时间
--结果: 2018-12-06 20:35:21

select DATE_SUB(now(), INTERVAL 30 DAY);-- 前三十天
--结果: 2018-11-06 20:35:21

select DATE_SUB(now(), INTERVAL -30 DAY);-- 后三十天(函数本身是减法,用负数就是加)
--结果: 2019-01-05 20:35:21

select DATE_SUB(now(), INTERVAL 1 month);-- 减去一个月
--结果: 2018-11-06 20:35:21

select DATE_SUB(now(), INTERVAL 1 year);-- 减一年
--结果: 2017-12-06 20:35:21

DATE_ADD()函数

DATE_ADD()函数的使用效果与DATE_SUB相反。

**语法:**同DATE_SUB

set @dt = now();

select date_add(@dt, interval 1 day); -- 获取当前时间的后一天
select date_add(@dt, interval 1 hour); -- 获取当前时间的后一小时
select date_add(@dt, interval 1 minute); -- …
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);

DATE_FORMAT()函数

实现日期/时间转换为字符串

语法:

date_format(date,format), time_format(time,format)

示例:

select date_format('2018-08-11 12:30:00', '%Y %m %d %H%i%s');
# 2018 08 11 123000 

常见format:

‘%Y-%m-%d %H:%i:%s’

‘%Y %m %d %H%i%s’

STR_TO_DATE()函数

实现字符串转化成日期

语法:

str_to_date(str, format)

示例:

select str_to_date('08/11/2018', '%m/%d/%Y'); -- 2018-08-11
 
select str_to_date('08/11/08' , '%m/%d/%y'); -- 2018-08-11
 
select str_to_date('08.11.2008', '%m.%d.%Y'); -- 2018-08-11
 
select str_to_date('08:00:30', '%h:%i:%s'); -- 08:00:30
 
select str_to_date('08.11.2018 08:00:30', '%m.%d.%Y %h:%i:%s'); 

时间差函数

timestampdiff(interval,start_time,end_time)

    计算时间差函数,interval代表指定的单位,常用可选:

YEAR 年数
MONTH 月数
DAY 天数(返回秒数差除以3600*24的整数部分)
HOUR 小时(返回秒数差除以3600的整数部分)
MINUTE 分钟(返回秒数差除以60的整数部分)
SECOND 秒

datediff(end_time,start_time)

     两个日期相减,返回天数,大的值在前

timediff(end_time,start_time)

    两个日期相减,返回 time 差值(时分秒格式),大的值在前

last_day(date)

    获取某一个月最后一天的日期

    SELECT LAST_DAY('2022-04-12') 取2022年4月的最后一天的日期

    输出结果:2022-04-30

GROUP_CONCAT函数

语法:

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc][separator ‘分隔符’] )

作用:

按照指定字段分组并将分组的值拼接成字符串,需要要配合关键字GROUP BY来使用。

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

拼接成的字符串长度限制:默认是1024个字符。

查看方法:show variables like ‘group_concat_max_len’;

SELECT variety_type,GROUP_CONCAT(DISTINCT variety_name ORDER BY create_date DESC SEPARATOR ';') from variety_basic GROUP BY variety_type;

在这里插入图片描述

CONCAT_WS函数

语法:

CONCAT_WS(separator,str1,str2,…)

作用:

和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)。

说明:

第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

SELECT CONCAT_WS(',',variety_name,variety_type) FROM variety_basic;

在这里插入图片描述

SELECT CONCAT_WS(',',variety_name,variety_type) as value FROM variety_basic WHERE variety_type='CFFEX';

在这里插入图片描述

GROUP_CONCAT函数和CONCAT_WS函数组合:

使用,连接variety_type和variety_name,并每组的variety_type值使用;连接返回

SELECT variety_type,GROUP_CONCAT(CONCAT_WS(',',variety_name,variety_type)  SEPARATOR ';') from variety_basic GROUP BY variety_type;

在这里插入图片描述

concat()函数

功能:

将多个字符串连接成一个字符串。

语法:

concat(str1, str2,…)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

举例:

SELECT CONCAT(variety_name,':',variety_desc) aa FROM variety_basic WHERE variety_type='CFFEX';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofti7lHm-1677480697893)(C:\Users\Lenovo\AppData\Local\Temp\1677477411835.png)]

组合IFNULL使用:

SELECT CONCAT(variety_name,':',IFNULL(variety_desc,'00')) aa FROM variety_basic WHERE variety_type='CFFEX';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTn1VEhc-1677480697894)(C:\Users\Lenovo\AppData\Local\Temp\1677477452658.png)]

IFNULL() 函数

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

语法:

IFNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。

参数说明:

expression 必须,要测试的值
alt_value 必须,expression 表达式为 NULL 时返回的值

实例:

第一个参数为 NULL:

SELECT IFNULL(NULL, “RUNOOB”);
以上实例输出结果为:

RUNOOB

第一个参数不为 NULL:

SELECT IFNULL(“Hello”, “RUNOOB”);
以上实例输出结果为:

Hello

SQL 字符函数:

字符或字符串函数是将一个或多个字符作为参数,并在所需操作后返回一个字符。属于字符函数的有:

LOWER() 函数

lower 函数用于将字符或字符串转换为小写。

语法 —

SELECT LOWER(string);

示例 —

SELECT LOWER('Lower This STRING');

输出 —

lower this string

和 lower 函数一样,UPPER() 函数也能将所有字母转换为大写字母。

TRIM() 函数

trim 函数可以删除任何前导或尾随空格。

语法 —

SELECT TRIM(STRING);

示例 —

SELECT TRIM(' Remove whitespace ')

输出 —

Remove whitespace

另外,我们还可以用 LTRIM()RTRIM() 函数分别从左边或右边对空格进行删除。

SUBSTRING() 函数

substring 函数可以从给定字符串中提取子字符串。它需要三个参数:string, start index, 和 length.

语法 —

SELECT SUBSTRING(string, start, length);

示例 —

SELECT SUBSTRING('How to use SQL', 5, 2);

输出 —

to

请注意,在 SQL 中,第一个字符是位置 1,而不是像大多数编程语言那样是 0。

另外,字符串函数还有 — REVERSE(str):反转 ,LENGTH(str)

substring_index()文本分割函数

    substring_index(FIELD, sep, n)可以将字段FIELD按照sep分隔:

    (1).当n大于0时取第n个分隔符(n从1开始)左边的全部内容;

    (2).当n小于0时取倒数第n个分隔符(n从-1开始)右边的全部内容;

replace() 替换函数

语法:replace(字符串,原字符,新字符)

二、聚合函数

聚合函数为整个数组(使用 GROUP BY 子句)或整个表生成单个值。常用的如下:

CASE WHEN函数

语法:

第一种:case用于实现简单的"等于"判断。

case 字段名

when ‘字段值’ then ‘需要返回的值’/字段

when ‘字段值’ then ‘需要返回的值’ /字段

else ‘剩余所有的需要返回的值’ /字段

end

例子:

SELECT
	( CASE variety_desc WHEN '期货' THEN 'QH' WHEN '现货期权' THEN variety_desc ELSE '未知类型' END ) as bb
FROM
	variety_basic 
WHERE
	variety_type = 'CFFEX';

在这里插入图片描述

第二种:case还可用于"有条件"的逻辑判断。

case when 字段名 = ‘字段值’ then ‘需要返回的值’ else ‘剩余所有的需要返回的值’ end

SELECT
	( CASE WHEN variety_desc = '期货' THEN 'QH' WHEN '现货期权' THEN variety_desc ELSE '未知类型' END ) AS bb 
FROM
	variety_basic 
WHERE
	variety_type = 'CFFEX';

在这里插入图片描述

第三种:判断字段为null的方法

SELECT
	( CASE WHEN variety_desc IS NULL THEN 0 ELSE 1 end) AS bb 
FROM
	variety_basic 
WHERE
	variety_type = 'CFFEX';

在这里插入图片描述

AVG() 函数

SELECT AVG(column_name) FROM table_name;

COUNT() 函数

count 函数获取值列表,并返回所提供值的总计数。Count 函数返回值的总计数,而不是每个字符的频率。

语法 —

SELECT COUNT(DISTINCT column_name) FROM table_name;

查询 — 我想知道工资大于或等于 80,000 的员工人数。

SELECT COUNT(EID) FROM employee WHERE salary >= 80000;

MAX() 函数

max 函数接收数值列表并返回最大值。

语法 —

SELECT MAX(column_name) FROM table_name;

查询 — 我想知道所有员工中的最高薪资是多少。

SELECT MAX(salary) FROM employee;

img

最高工资

此外还有 MIN() 函数,可以从数字列表中返回最小值。

SUM() 函数

Sum 函数返回提供的数值列表的总和。

语法 —

SELECT SUM(column_name) FROM table_name;

查询 — 我想知道公司一年内支付的工资总额。

SELECT SUM(salary) FROM employee;

img

工资总和

三、标量函数

SQL 算术函数:

SQL 算术函数执行数学运算,并从数值返回单个值。它是一种 SQL 标量函数。

算术函数可接受的数据类型有:小数、整数、浮点数、实数。

ROUND() 函数

ROUND 函数取一个小数,并将其四舍五入到最接近的整数。

语法 —

SELECT ROUND(column_name, decimals) FROM table_name;
SELECT ROUND(decimal_num);

例如,我想将 5.699 舍入到小数点后一位。

SELECT ROUND(5.699, 1);

产出 — 5.7

其他类似的函数有 CEIL()FLOOR()。CEIL() 函数将值舍入为下一个整数,FLOOR() 函数将值舍入为上一个(较低的)整数。这两个函数的语法和 ROUND() 相同。

ABS()函数

abs 函数获取一个数值并返回绝对值。这意味着它只取这个值而忽略符号。

语法 —

SELECT ABS(column_name) FROM table_name;
SELECT ABS(value);

例如,我想要 -12.22 和 43.3 的绝对值

SELECT ABS(-12.22);

输出 —12.22

SELECT ABS(43.3);

产出 — 43.3

请注意, -12.22 的负号被 ABS() 函数去掉了。

POWER() 函数

power 函数用于将一个数字的值返回到另一个数字。这两个数字都作为参数传递。

语法 —

SELECT POWER(base, exponenet);

例如,如果我获得 2 的 5 次幂。

SELECT POWER(2, 5);

输出 —32

其他语法差不多的算术函数有 -

MOD() — 返回 A 除以 B 后剩余的余数。

SQRT() — 返回数字的平方根。

EXP() — 返回对给定参数提出的 e。e 的值约为 2.718。

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

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

相关文章

mysql(一) 使用注意事项及优化

初学mysql的时候、写了一份 "什么是CRUD? CRUD的操作" 的文章(18年的) 我开心看到有朋友经常在下面讨论一些问题、 但是以现在(今天 23年)回头看觉得 那些只是入门需要知道和掌握的、也刚好最近不是很忙 所…

S3C2440开发环境搭建

拿出了之前的S3C2440开发板,然后把移植uboot、移植内核、制作根文件系统、设备树编写驱动等几项再做一遍,这篇文章先记录下环境搭建过程,以及先把现成的uboot、内核、根文件系统下载进去,看看开发板还能不能用,先熟悉一…

【C++】踏入C++的大门(万字总结)

文章目录🎪 踏入C的大门🚀1.什么是C🚀2.C发展史🚀3.C关键字🚀4.命名空间⭐4.1 命名空间定义⭐4.2 命名空间使用⭐4.3 C输入和输出🚀5.缺省参数⭐5.1 缺省参数概念⭐5.2 缺省参数分类🚀6.函数重载…

Unreal Engine10:Character的实现

写在前面 这里主要是介绍一下Character的实现,顺带也介绍一下UE4资源的获取; 一、UE4资源获取 1. 地图的获取 1.1 下载资源 在Epic Games Launcher的虚幻商城中搜索内容,带有环境标签的就主要是地图资源;有一些是免费的资源和…

C#--耗时操作实现UI界面实时更新不阻塞(耗时操作解决窗体卡顿)

前言C#实现窗体加载进度条或者百分比实时显示耗时操作的进度,方法有很多。但是经过我的学习、查找与实际应用,发现Task配合MethodInvoker最为高效便捷。下面我就来结合代码讲一下要注意的问题。基础知识C#在winform上进行耗时操作往往会放置progressbar&…

JavaWeb 实战 01 - 计算机是如何工作的

计算机是如何工作的1. 计算机发展史2. 计算机的基本组成2.1 冯诺依曼体系结构2.2 CPU的内部结构2.3 指令2.3.1 指令表2.3.1.1 寄存器2.3.2 CPU的工作流程2.4 小结3. 操作系统3.1 核心功能3.2 操作系统的软硬件结构3.3 什么是进程 / 任务3.4 进程管理3.4.1 管理3.4.2 PCB : 进程…

Carl2——二叉树

一.定义struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode(int x) : val(x), left(NULL), right(NULL) {} };二.遍历深度优先1.1 迭代法【1】前序遍历&#xff08;144&#xff09;class Solution { public:vector<int> preorderTraversal(TreeNode* roo…

小文智能结合ChatGPT的产业未来

最近几个月&#xff0c;由人工智能实验室OpenAI发布的对话式大型语言模型ChatGPT在国内外各大平台掀起了一阵AI狂潮。短短几天时间&#xff0c;其用户量就突破了百万大关&#xff0c;注册用户之多一度导致服务器爆满。 继AI画图之后&#xff0c;ChatGPT成为了新的顶流&#xf…

支付宝二面:使用 try-catch 捕获异常会影响性能吗?

一. JVM异常处理逻辑 Java 程序中显式抛出异常由athrow指令支持&#xff0c;除了通过 throw 主动抛出异常外&#xff0c;JVM规范中还规定了许多运行时异常会在检测到异常状况时自动抛出(效果等同athrow), 例如除数为0时就会自动抛出异常&#xff0c;以及大名鼎鼎的 NullPointe…

论文阅读:NeRF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS

中文标题&#xff1a;分析并提升神经辐射场 提出问题 把NeRF生成的视角图像投影到一个球模型上&#xff08;体密度在球面上为1&#xff0c;其余为零&#xff09;&#xff0c;这个模型可以很好解释训练集&#xff08;左2&#xff09;&#xff0c;但是一旦推广到其他视角&#x…

阶段八:服务框架高级(第五章:服务异步通信-高级篇(RabbitMQ高级))

阶段八&#xff1a;服务框架高级&#xff08;第五章&#xff1a;服务异步通信-高级篇&#xff08;RabbitMQ高级&#xff09;&#xff09;Day-第五章&#xff1a;服务异步通信-高级篇&#xff08;RabbitMQ高级&#xff09;0.学习目标1.消息可靠性1.1.生产者消息确认1.1.1.修改配…

Docker离线部署

Docker离线部署 目录 1、需求说明 2、下载docker安装包 3、上传docker安装包 4、解压docker安装包 5、解压的docker文件夹全部移动至/usr/bin目录 6、将docker注册为系统服务 7、重启生效 8、设置开机自启 9、查看docker版本信息 1、需求说明 大部份公司为了服务安全…

【PostgreSQL的idle in transaction连接状态】

在平时查询pg_stat_activity这个视图的时候&#xff0c;每一行包含了一个进程的相关信息&#xff0c;包含当前正在执行的SQL&#xff0c;或者会话的状态等等&#xff0c;state字段表示当前进程的状态。在PostgreSQL数据库里&#xff0c;其实代码里总共定义了7种BackendState&am…

手推式洗地机什么牌子好?洗地机品牌排行榜

当今潮流下&#xff0c;大家都开始纷纷追求高品质的居家生活&#xff0c;洗地机也成为越来越多人的追求&#xff0c;因为和传统的吸尘器相比&#xff0c;洗地机除了有扫地的功能之外&#xff0c;还可以轻松搞定家里的拖地任务&#xff0c;下面我们一起来看看洗地机排行榜都有哪…

怎么把音乐传到苹果手机上?如何将铃声导入iphone

很多人肯定都有这样的经验—比起电脑&#xff0c;使用iPhone和iPad播放音乐能获得更好的声音体验。 因此&#xff0c;现在有越来越多的用户将音乐传输到iPhone/iPad上播放。怎么把音乐传到苹果手机上&#xff1f;把音乐导入苹果手机&#xff0c;主要有2种方法&#xff1a;一种是…

【python】运算符,有关它的一切,都在这里了

Python运算符嗨害大家好鸭&#xff01;我是小熊猫~什么是运算符&#xff1f;Python算术运算符Python比较运算符Python赋值运算符Python位运算符Python逻辑运算符Python成员运算符Python身份运算符Python运算符优先级嗨害大家好鸭&#xff01;我是小熊猫~ 源码资料电子书:点击此…

【软考——系统架构师】UML 建模与架构文档化

&#x1f50e;这里是【软考——系统架构师】&#xff0c;关注我考试轻松过线 &#x1f44d;如果对你有帮助&#xff0c;给博主一个免费的点赞以示鼓励 欢迎各位&#x1f50e;点赞&#x1f44d;评论收藏⭐️ 文章目录UML 基础UML 软件开发过程系统架构文档化送书福利UML 基础 U…

【2.27】动态规划、MySQL锁,基础篇、Redis

执行一条 select 语句&#xff0c;期间发生了什么&#xff1f; MySQL 执行流程是怎样的&#xff1f; MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层。 Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现&#xff0c;主要包括连接器&…

MyBatis - 07 - MyBatis的各种查询功能

文章目录项目 结构SelectMapper接口SelectMapper.xmlSelectMapperTest测试类测试结果1、查询一个实体类对象&#xff08;1.根据id查询用户信息&#xff09;2、查询一个list集合&#xff08;2.查询所有用户信息&#xff09;3、查询单个数据&#xff08;3.查询用户信息的总记录数…

Datawhale统计学习方法打卡Task05

学习教材《统计学习方法&#xff08;第二版&#xff09;》李航 学习内容&#xff1a;第5章 决策树 第五章 决策树 决策树是一种基本你的分类与回归方法。决策树模型呈树形结构&#xff0c;在分类问题中&#xff0c;表示基于特征对实例进行分类的过程。通过ID3和C4.5介绍特征…