当前位置: 首页 > 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...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

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&…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...