当前位置: 首页 > news >正文

MySQL常用函数整理

MySQL常用函数整理

  • sql函数分类
  • 一、流程控制
    • 1、判断值为null或空字符串
    • 2、IF函数
    • 3、IFNULL函数
    • 4、CASE函数
      • (1) 相当于switch case的作用
      • (2) 相当于if elseif的作用
    • 5、COALESCE函数
  • 二、字符串类(GBT答案)
    • 1、用于select、insert等子句中
    • 2、用于where子句中
  • 其他函数

在通过sql处理一些业务场景中,除了使用关联查询、子查询等一些常用sql方法外,还可以使用sql函数去处理,相比于在代码中直接处理,函数的使用清晰简单,往往能达到事半功倍的效果。

sql函数分类

常用SQL函数主要包括以下几类:数值类、字符串类、时间日期类、数据转换、流程控制。以下主要叙述以下流程控制类函数和字符串类函数,使用比较广泛,对于业务处理也最实用

一、流程控制

首先先列举一下比较运算符,可以使用在函数语句中

<=、>=、>、<>、
IS NULL、IS NOT NULL、
BETWEEN . . . AND. . . 、IN、NOT IN、LIKE、REGEXP(正则)
LEAST :当有两个或者多个参数时,返回其中的最小值。如果其中一个值为NULL,则
返回结果就为NULL。
GREATEST :当有两个或者多个参数时,返回其中的最大值。如果其中一个值为NULL.
则返回结果就为NULL。

1、判断值为null或空字符串

ISNULL(NAME)=1) //判断值为null,为NULL返回1,否则返回0
(LENGTH(trim(NAME))=0 //判断是否为空字符串,为空等于0,否则大于0

2、IF函数

语法:IF(表达式1,表达式2,表达式3)
如果表达式1为true,则执行表达式2,否则执行表达式3。类似于三目运算
作用于:select 查询语句:

SELECT
IF( ITASWITCH = 'Y', '是', '否' ) ITALEVEL 
FROMt_logsmgt_rule

返回结果:
在这里插入图片描述
作用于:where条件语句:

SELECT* 
FROMt_logsmgt_rule 
WHERE
IF( ITASWITCH = 'N', 1, 0 )

只是用于模拟,具体使用还是得结合业务条件,结果如下:
在这里插入图片描述

3、IFNULL函数

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
语法:IFNULL(表达式, 备用值)
这个有点类似于IF(ISNULL(xx),xx,yy)。就不过的赘述了。

SELECTIFNULL( PID, ID ) 
FROMt_logsmgt_rule;

4、CASE函数

(1) 相当于switch case的作用

CASE开始,END结束
WHEN条件,TEHN执行符合条件的表达式
ELSE以上条件都不符合执行的表达式
最简单的例子:

SELECT NAME,account,
CASEsex WHEN 1 THEN'男' WHEN 0 THEN'女' ELSE '不男不女' END AS sex 
FROMt_user

结果如下:
在这里插入图片描述

(2) 相当于if elseif的作用

SELECT NAME,account,
CASEWHEN LENGTH( trim( NAME ) ) > 4 THEN'名字长的' ELSE '名字短的' END AS nameLen 
FROMt_user

在这里插入图片描述
case函数当然也可以作用于where子句中,例如

SELECT column1, column2
FROM table_name
WHERE
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result3
END;

其中,condition1和condition2是条件表达式,result1、result2和result3是对应条件的结果。如果条件表达式为真,则返回对应的结果,否则返回ELSE子句中的结果。chatGBT告诉我的。。。

5、COALESCE函数

COALESCE 函数接受多个参数,返回其中第一个非 NULL 的参数值。

SELECT COALESCE(name, email, 'Unknown') AS contact FROM users;

在上面的示例中,如果 name 列的值不为空,则返回 name 列的值;如果 name 列的值为空,但 email 列的值不为空,则返回 email 列的值;如果 name 和 email 列的值都为空,则返回字符串 ‘Unknown’。

二、字符串类(GBT答案)

1、用于select、insert等子句中

例如,假设有一张名为"users"的表,包含了用户的姓名和邮箱信息。我们可以使用上述字符串函数对这些信息进行处理和查询,例如:

连接字符串:
SELECT CONCAT(first_name, ’ ', last_name) AS full_name
FROM users;

截取字符串:
SELECT SUBSTRING(email, 1, 5) AS domain
FROM users;

计算字符串长度:
SELECT LENGTH(first_name) AS name_length
FROM users;

替换字符串:
SELECT REPLACE(email, ‘@’, ‘at’) AS modified_email
FROM users;

这些例子只是展示了如何在MySQL表中使用字符串函数。在实际的数据处理中,我们可以根据具体的需求和情况使用不同的字符串函数,以提高数据处理效率。

2、用于where子句中

使用LIKE和CONCAT函数筛选名字以"John"开头的数据行:
SELECT *
FROM users
WHERE CONCAT(first_name, ’ ', last_name) LIKE ‘John%’;

使用LIKE和SUBSTRING函数筛选邮箱域名为"email.com"的数据行:
SELECT *
FROM users
WHERE SUBSTRING(email, -10) LIKE ‘email.com’;

INSTR(str, substr)
INSTR函数用于返回字符串中子字符串的位置,如果未找到则返回0。例如:

SELECT *
FROM users
WHERE INSTR(email, ‘john’) > 0; – 匹配包含"john"的邮箱

TRIM(str)
TRIM函数用于删除字符串中的空格或指定的字符。例如:

SELECT *
FROM users
WHERE TRIM(first_name) = ‘John’; – 匹配名字为"John"的用户,忽略前后的空格

ASCII(char)
ASCII函数返回给定字符的ASCII码值。例如:

SELECT *
FROM users
WHERE ASCII(SUBSTR(first_name, 1, 1)) = 65; – 匹配名字首字母为’A’的用户

其他函数

列举一下:
聚合函数(Aggregate Functions):对一组数据进行聚合计算,如 SUM、AVG、MAX、MIN 等。
数学函数(Mathematical Functions):执行数学计算,如 ABS、CEILING、FLOOR、LOG、POWER、ROUND、SQRT 等。
日期和时间函数(Date and Time Functions):对日期和时间进行操作,如 CURDATE、CURTIME、DATE、TIME、YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、NOW 等。

相关文章:

MySQL常用函数整理

MySQL常用函数整理sql函数分类一、流程控制1、判断值为null或空字符串2、IF函数3、IFNULL函数4、CASE函数(1) 相当于switch case的作用(2) 相当于if elseif的作用5、COALESCE函数二、字符串类&#xff08;GBT答案&#xff09;1、用于select、insert等子句中2、用于where子句中其…...

设计模式—“组件协作”

现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 典型模式有:Template Method、Observer、Strategy 一、Template Method 动机 在软件构建过程中,对于某一…...

vue里使用driver.js实现项目功能向导指引

介绍 https://github.com/kamranahmedse/driver.js driver.js 是一个轻量级、无依赖的原生JavaScript引擎&#xff0c;在整个页面中驱动用户的注意力&#xff0c;强大的、高度可定制的原生JavaScript引擎&#xff0c;无外部依赖&#xff0c;支持所有主流浏览器。 安装 npm …...

详解JAVA类加载

目录 1.概述 2.双亲委派 3.ServiceClassLoader 4.URLClassLoader 5.加载冲突 1.概述 概念&#xff1a; 类加载器&#xff08;Class Loader&#xff09;是Java虚拟机&#xff08;JVM&#xff09;的一个重要组件&#xff0c;负责加载Java类到内存中并使其可以被JVM执行。类…...

高斯分布、高斯混合模型、EM算法详细介绍及其原理详解

相关文章 K近邻算法和KD树详细介绍及其原理详解朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解决策树算法和CART决策树算法详细介绍及其原理详解线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解硬间隔支持向量机算法、软间隔支持向量机算法、非线性支持向量机算法详细…...

[Linux入门篇]一篇博客解决C/C++/Linux System Call文件操作接口的使用

目录 0.前言 1.C / C ->文件操作 1.1 C语言文件操作 1.1.1 C语言文件打开/关闭/写入 1.1.2 C语言文件的追加操作 1.1.3 C语言文件的读取 1.2 C语言文件操作 1.2.1 C文件打开 / 关闭 / 写入 1.2.2 C文件读取 1.2.3 文件追加 2.三个默认输入输出流 2.1 C语言中的三…...

数据结构和算法学习记录——删除有序数组中的重复项、合并两个有序数组

去重删除有序数组中的重复项题目来自&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/题目描述给你一个 升序排列 的数组 nums &#xff0c;请你原地删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数…...

FPGA实现模拟视频BT656解码 TW2867四路PAL采集拼接显示 提供工程源码和技术支持

目录1、前言2、模拟视频概述3、模拟视频颜色空间4、逐行与隔行5、BT656数据与解码BT656数据格式BT656数据解码6、TW2867芯片解读与配置TW2867芯片解读TW2867芯片配置TW2867时序分析7、设计思路与框架8、vivado工程详解9、上板调试验证10、福利&#xff1a;工程代码的获取1、前言…...

【建议收藏】超详细的Canal入门,看这篇就够了!!!

概述 canal是阿里巴巴旗下的一款开源项目&#xff0c;纯Java开发。基于数据库增量日志解析&#xff0c;提供增量数据订阅&消费&#xff0c;目前主要支持了MySQL&#xff08;也支持mariaDB&#xff09;。 背景 早期&#xff0c;阿里巴巴B2B公司因为存在杭州和美国双机房部…...

KubeSphere 社区双周报 | OpenFunction v1.0.0-rc.0 发布

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者&#xff0c;并对近期重要的 PR 进行解析&#xff0c;同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为&#xff1a;2023.02.17-2023.…...

查漏补缺3月

SPI扩展序列化方式 分布式ID的相关问题 TCP的流量控制&#xff0c;避免浪费网络资源的滑动平均法也可以用在其他可能会出现资源浪费的情况等 讲一讲对自己这个 RPC 项目的想法&#xff0c;你是怎么设计这个项目的&#xff0c;想要实现那些功能&#xff1f; 你认为一个好的 RPC…...

如何使用Java实现类似Windows域登录

什么是域登录&#xff1f; 域登录是一种集中式身份验证和授权方法&#xff0c;用于访问企业内部网络和资源。在Windows环境中&#xff0c;域是一组计算机和用户帐户的集合&#xff0c;受到单个安全管理的控制。域登录允许用户在访问域资源时使用单个帐户名和密码进行身份验证&…...

生成模型与判别模型

生成模型与判别模型 一、决策函数Yf(X)或者条件概率分布P(Y|X) 监督学习的任务就是从数据中学习一个模型&#xff08;也叫分类器&#xff09;&#xff0c;应用这一模型&#xff0c;对给定的输入X预测相应的输出Y。这个模型的一般形式为决策函数Yf(X)或者条件概率分布P(Y|X)。 …...

Kotlin lateinit 和 lazy 之间的区别 (翻译)

Kotlin 中的属性是使用var或val关键字声明的。Late init 和 lazy 都是用来初始化以后要用到的属性。 由于这两个关键字都用于声明稍后将要使用的属性&#xff0c;因此让我们看一下它们以及它们的区别。 Late Init 在下面的示例中&#xff0c;我们有一个变量 myClass&#xff0…...

Golang alpine Dockerfile 最小打包

最近在ubantu 上进行了 iris项目的alpine 版本打包&#xff0c;过程遇到了一些问题&#xff0c;记录一下。 golang版本 &#xff1a;1.18 系统&#xff1a;ubantu 代码结构 Dockfile内容 FROM alpine:latest MAINTAINER Si Wei<3320376695qq.com> ENV VERSION 1.1 ENV G…...

在NVIDIA JetBot Nano小车上更新WIFI驱动

前言:树莓派上的WIFI驱动类型比较多&#xff0c;经常有更好驱动的需求本文给出RealTek的无线WIFI模组&#xff0c;8821CU的驱动更新办法步骤第一 通过其他方式连接网络小车通过网线或者老的WIFI连接到网络上第二 构建驱动模块并下载驱动首先&#xff0c;我们需要打开一个ubuntu…...

2023年网络安全最应该看的书籍,弯道超车,拒绝看烂书

学习的方法有很多种&#xff0c;看书就是一种不错的方法&#xff0c;但为什么总有人说&#xff1a;“看书是学不会技术的”。 其实就是书籍没选对&#xff0c;看的书不好&#xff0c;你学不下去是很正常的。 一本好书其实不亚于一套好的视频教程&#xff0c;尤其是经典的好书…...

VSYNC研究

Vsync信号是SurfaceFlinger进程中核心的一块逻辑&#xff0c;我们主要从以下几个方面着手讲解。软件Vsync是怎么实现的&#xff0c;它是如何保持有效性的&#xff1f;systrace中看到的VSYNC信号如何解读&#xff0c;这些脉冲信号是在哪里打印的&#xff1f;为什么VSYNC-sf / VS…...

python gRPC:根据.protobuf文件生成py代码、grpc转换为http协议对外提供服务

文章目录python GRPC&#xff1a;根据.protobuf文件生成py代码grpcio-tools安装和使用python GRPC的官网示例grpc转换为http协议对外提供服务工作问题总结grpc-ecosystem/grpc-gateway/third_party/googleapis: warning: directory does not exist.python GRPC&#xff1a;根据…...

Allegro如何输出ODB文件操作指导

Allegro如何输出ODB文件操作指导 在PCB设计完成之后,需要输出生产文件用于生产加工,除了gerber文件可以用生产制造,ODB文件同样也可以用于生产,如下图 用Allegro如何输出ODB文件,具体操作如下 首先确保电脑上已经安装了ODB这个插件,版本不受限制点击File...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...