「MySQL」深入理解MySQL中常用的SQL函数

「MySQL」深入理解MySQL中常用的SQL函数

  • 窗口函数参考文章
  • 1. COALESCE 函数
  • 2. USING 函数
  • 3. LEAD 函数
  • 4. interval 函数
  • 5. INSTR 函数
  • 6. substring_index 函数
  • 7. LENGTH 函数和 CHAR_LENGTH 函数

窗口函数参考文章

SQL窗口函数

1. COALESCE 函数

COALESCE 函数的作用是从一组值中返回第一个非空(NULL)的值。如果所有的值都是 NULL,那么 COALESCE 函数会返回 NULL。

举个例子,如果我们有一个表格包含了学生的姓名和昵称,但有些学生没有昵称,我们可以使用 COALESCE 函数来选择一个非空的名字作为显示的名称:

SELECT COALESCE(nickname, name) AS display_name
FROM students;

在这个例子中,如果 nickname 字段不为空,那么 display_name 将会使用昵称;如果 nickname 字段为空,那么 display_name 将会使用姓名。

2. USING 函数

在 SQL 中,可以使用 USING 关键字来指定连接操作的列。当使用 JOIN 操作连接两个表时,如果这两个表中的连接列具有相同的名称,可以使用 USING 关键字来简化连接条件的书写。
以下是使用 USING 关键字进行连接操作的示例:

SELECT *
FROM table1
JOIN table2 USING (common_column);

在上面的示例中,table1table2 是要连接的两个表,它们都具有一个名为 common_column 的列。使用 USING 关键字,可以省略连接条件的重复列名,系统会自动匹配这两个表中具有相同名称的列进行连接,不能指定多个列。

3. LEAD 函数

LEAD() 是一种窗口函数,用于获取当前行之后的行的值。它可以帮助你在查询中访问结果集中下一个行的数据,而无需实际改变结果集的顺序。

以下是 LEAD() 函数的基本语法:

LEAD(expression, offset, default) OVER (PARTITION BY partition_column ORDER BY order_column)
  • expression: 要获取的值的列或表达式。
  • offset: 指定要获取的后续行的偏移量(默认为 1,表示下一行)。
  • default: 可选参数,指定当没有后续行时要返回的默认值(如果不提供,则默认为 NULL)。
  • PARTITION BY partition_column: 可选子句,用于对结果集进行分区。
  • ORDER BY order_column: 指定确定行之间顺序的列。

通过使用 LEAD() 函数,你可以轻松地访问结果集中当前行之后的行的数据,从而执行各种分析和计算操作。在之前的示例中,我展示了如何在查询中使用 LEAD() 函数来获取用户的下一个刷题日期。

4. interval 函数

在SQL中,INTERVAL 5 MINUTE表示一个时间间隔,具体意思是“5分钟”。这个用法通常用于在SQL语句中对时间进行加减操作,比如计算时间差、增加时间等。

例如,在MySQL中,你可以使用INTERVAL关键字来对时间进行加减操作。下面是一个示例:

SELECT NOW() AS current_time,NOW() + INTERVAL 5 MINUTE AS after_5_minutes;

这个查询会返回当前时间以及加上5分钟后的时间。INTERVAL 5 MINUTE表示增加5分钟。

5. INSTR 函数

INSTR 函数是 SQL 中用来查找字符串中子串的函数。它的语法如下:

INSTR(string, substring)

其中,string 是要查找的字符串,substring 是要查找的子串。函数返回 substringstring 中第一次出现的位置,如果 substring 不在 string 中,则返回 0。

以下是一个示例:

SELECT INSTR('hello world', 'world');

这个查询会返回 7,因为子串 'world' 在字符串 'hello world' 中第一次出现的位置是 7。

在你的例子中,INSTR(comment,'是')+INSTR(comment,'试')+INSTR(comment,'报名') > 0 的含义是,如果 comment 字符串中包含子串 '是''试''报名' 中的任意一个,那么该表达式的值就为真(即大于0)。

6. substring_index 函数

SUBSTRING_INDEX 函数用于在字符串中查找并返回某个分隔符之前或之后的子串。该函数的语法如下:

SUBSTRING_INDEX(str, delim, count)
  • str 是要进行处理的字符串。
  • delim 是用作分隔符的字符或子串。
  • count 指定了要返回的子串在分隔符出现的次数。如果 count 为正数,函数将从左侧开始查找;如果 count 为负数,函数将从右侧开始查找。

例如,如果有字符串 'apple,banana,cherry',想要获取逗号后的第一个内容 'banana',可以使用以下 SQL 查询:

SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', -1) AS result;

这个查询将返回 'banana',因为它是逗号后的第一个内容。

7. LENGTH 函数和 CHAR_LENGTH 函数

在 SQL 中,LENGTH 函数和 CHAR_LENGTH 函数用于获取字符串的长度,但它们之间有一些区别。

  1. LENGTH 函数:

    • LENGTH 函数返回字符串中的字符数或字节数,取决于数据库的字符集编码。
    • 对于英文字符或单字节字符集,LENGTH 函数返回字符串中的字符数。
    • 对于多字节字符集(如 UTF-8),LENGTH 函数返回字符串中的字节数,而不是字符数。
  2. CHAR_LENGTH 函数:

    • CHAR_LENGTH 函数返回字符串中的字符数,不受字符集编码的影响。
    • 无论是单字节字符集还是多字节字符集,CHAR_LENGTH 函数都会返回字符串中的字符数。

例如,假设有一个包含中文字符的字符串 '你好,世界!',如果使用 LENGTHCHAR_LENGTH 函数来获取其长度,结果可能如下:

SELECT LENGTH('你好,世界!') AS length_result, CHAR_LENGTH('你好,世界!') AS char_length_result;

在这个例子中,length_result 的值取决于数据库的字符集编码,而 char_length_result 的值将始终是 6,因为字符串中有 6 个字符。

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

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

相关文章

瑞_Redis_Redis的Java客户端

文章目录 1 Redis的Java客户端1.1 Jedis快速入门1.1.1 入门案例1.1.1.1 项目构建1.1.1.2 引入依赖1.1.1.3 建立连接1.1.1.4 释放资源1.1.1.5 测试1.1.1.6 完整测试类代码 1.1.2 Jedis连接池1.1.2.1 连接池工具类1.1.2.2 改造原始代码 🙊 前言:本文章为瑞…

基于单片机的声光控制节能灯设计

摘 要:在当今社会,节约用电是低碳生活的基本行为之一,但是一些公众场所电力浪费现象依然存在,特别是长明灯、常亮屏等屡见不鲜,造成了严重的电力浪费。针对这种电力浪费现象,该文基于STC89C52单片机设计了一种声光控制节能灯,利用光敏电阻、光信息及语音信号控制电路收集…

常用sql语句及其优化

文章目录 介绍常用sql语句1. 数据查询1.1 SELECT 语句1.2 DISTINCT 关键字1.3 WHERE 子句1.4 ORDER BY 子句1.5 LIMIT 关键字 2. 数据更新2.1 INSERT INTO 语句2.2 UPDATE 语句2.3 DELETE FROM 语句 3. 数据管理3.1 CREATE TABLE 语句3.2 ALTER TABLE 语句3.3 DROP TABLE 语句 …

蓝桥辅导之管道

蓝桥辅导之管道 核心思想&#xff1a;二分 二分时间 若t时刻成立 则之后也一定成立将mid时刻时每个阀门的水的流动区间加入对组 合并区间 最终判断是否覆盖全管道l1 && r m; #include <iostream>#include <cstring>#include <algorithm>#define…

批量自动加好友神器!微信快速扩友秘籍!

对于一些个人或者企业来说&#xff0c;传统的人工添加好友方式往往会出现效率低下&#xff0c;费时费力的问题。那么&#xff0c;有没有一种快速、便捷、安全的方式来解决这个问题呢&#xff1f;答案当然是肯定的&#xff0c;那就是通过使用微信管理系统来解决这一问题。 在微…

基于java+springboot景区行李寄存管理系统设计和实现

基于javaspringboot景区行李寄存管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取…

5GC SBA架构

协议标准&#xff1a;Directory Listing /ftp/Specs/archive/23_series/23.501/ (3gpp.org) NF描述说明NSSFNetwork Slice Selection Function网络切片选择&#xff0c;根据UE的切片选择辅助信息、签约信息等确定UE允许接入的网络切片实例。NEF Network Exposure Function网络开…

疾控中心的污水采样瓶用的是什么材质

疾控中心的污水采样瓶采用的材质是聚乙烯或聚丙烯塑料。这种材质的污水采样瓶具有耐腐蚀、耐高压、无毒无味、重量轻、易于携带等优点。此外&#xff0c;这种材质的污水采样瓶还可以在高温下消毒&#xff0c;不会变形或破裂。 疾控中心的污水采样瓶通常有不同的容积和形状&…

Harbor高可用(haproxy和keepalived)

Harbor高可用&#xff08;haproxy和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;haproxy和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设…

SpringBoot 自定义映射规则resultMap association一对一

介绍 例&#xff1a;学生表&#xff0c;班级表&#xff0c;希望在查询学生的时候一起返回该学生的班级&#xff0c;而一个实体类封装的是一个表&#xff0c;如需要多表查询就需要自定义映射。 表结构 班级表 学生表 SQL语句 SELECT a.id,a.name,a.classes,b.id classes…

Charles抓包 - 安装、激活、证书配置

最近刚好又遇到了抓包的需求&#xff0c;之前一直使用 Fiddler 抓包&#xff0c;这几年一直听大家都在用 Charles 抓包&#xff0c;正好一起了解下&#xff08;一般建议掌握一种抓包方式即可&#xff0c;都可以解决同种需求场景&#xff09; 抓包 Fiddler抓包 Charles 下载、安…

[机器视觉]halcon应用实例 多ROI模板匹配

本示例是单ROI的功能扩展示例&#xff0c;多ROI.后面有空了将出用户自定义ROI。 比单ROI增加ROI区域的连接和合并。还有for的实例应用。步骤同单ROI一样。不懂的可以看一下单ROI文章。[机器视觉]halcon应用实例 单ROI模板匹配-CSDN博客 有需要的可以【点赞】【关注】【收藏】…

2024年新提出的算法|LEA爱情进化算法(Love Evolution Algorithm)

Love Evolution Algorithm: a stimulus–value–role theory-inspired evolutionary algorithm for global optimization 爱情进化算法Love Evolution Algorithm&#xff0c;LEA&#xff0c;于2024年2月发表在中科院3区SCI期刊 The Journal of Supercomputing。 1、简介 本文提…

幸运星数(爷再也不想用pow了)

解法&#xff1a; 暴力 #include <iostream> #include <vector> using namespace std; #define endl \nint main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int n;long long sum 0, a;cin >> n;for (int i 1; i < n; i) {a 1;for (in…

#python升级#CentOS 7 python升级到3.11.6

在 CentOS 7 上升级 Python 版本可能会比较复杂&#xff0c;因为 CentOS 7 默认安装的是 Python 2.7&#xff0c;并且系统很多组件依赖于它。不过&#xff0c;可以通过以下步骤尝试升级到 Python 3.11.6&#xff1a; 安装必要的依赖&#xff1a; sudo yum install gcc openssl-…

洛谷P1015回文数

题目描述 若一个数&#xff08;首位不为零&#xff09;从左向右读与从右向左读都一样&#xff0c;我们就将其称之为回文数。 例如&#xff1a;给定一个十进制数 5656&#xff0c;将 5656 加 6565&#xff08;即把 5656 从右向左读&#xff09;&#xff0c;得到 121121 是一个…

蓝桥杯刷题2

1. 修建灌木 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();for (int i 1;i < n1;i){int distance Math.max(i-1,n-i);System.out.println(distance*2);}scan.close…

软件设计师软考题目解析12 --每日五题

想说的话&#xff1a;要准备软考了。0.0&#xff0c;其实我是不想考的&#xff0c;但是吧&#xff0c;由于本人已经学完所有知识了&#xff0c;只是被学校的课程给锁在那里了&#xff0c;不然早找工作去了。寻思着反正也无聊&#xff0c;就考个证玩玩。 本人github地址&#xf…

种花

分情况&#xff1a; 第一盆k种选择&#xff0c;之后全部k-1种选择 每次相乘结果对1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…

微信小程序iOS禁止上下拉显示白边

先上图暴露出问题 iOS端这个页面明明正好显示的&#xff0c;非要能下拉上拉给显示出来点白边。这样不就不好看了嘛。。 想了想是不是支持页面下拉导致的&#xff0c;加入以下代码到json文件中。 {"enablePullDownRefresh": false,"usingComponents": {} }…