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

http://www.lryc.cn/news/31575.html

相关文章:

  • 设计模式—“组件协作”
  • vue里使用driver.js实现项目功能向导指引
  • 详解JAVA类加载
  • 高斯分布、高斯混合模型、EM算法详细介绍及其原理详解
  • [Linux入门篇]一篇博客解决C/C++/Linux System Call文件操作接口的使用
  • 数据结构和算法学习记录——删除有序数组中的重复项、合并两个有序数组
  • FPGA实现模拟视频BT656解码 TW2867四路PAL采集拼接显示 提供工程源码和技术支持
  • 【建议收藏】超详细的Canal入门,看这篇就够了!!!
  • KubeSphere 社区双周报 | OpenFunction v1.0.0-rc.0 发布
  • 查漏补缺3月
  • 如何使用Java实现类似Windows域登录
  • 生成模型与判别模型
  • Kotlin lateinit 和 lazy 之间的区别 (翻译)
  • Golang alpine Dockerfile 最小打包
  • 在NVIDIA JetBot Nano小车上更新WIFI驱动
  • 2023年网络安全最应该看的书籍,弯道超车,拒绝看烂书
  • VSYNC研究
  • python gRPC:根据.protobuf文件生成py代码、grpc转换为http协议对外提供服务
  • Allegro如何输出ODB文件操作指导
  • koa-vue的分页实现
  • 安全开发基础 -- DAST,SAST,IAST简单介绍
  • 网络安全之暴力破解介绍及暴力破解Tomcat
  • Elasticsearch:使用 Logstash 构建从 Kafka 到 Elasticsearch 的管道 - Nodejs
  • 记录一次es的性能调优
  • 内核性能评估测试及具体修改操作步骤记录
  • S7-200smart远程无线模拟量信号采集案例
  • Blender Python材质处理入门
  • ChatGPT后劲很大,问题也是
  • 世界那么大,你哪都别去了,来我带你了解CSS3 (二)
  • 2023年再不会Redis,就要被淘汰了