泪伤荡的编程指南 泪伤荡的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM篇
  • 新特性
  • 进阶篇
  • 网络
  • 操作系统
  • 数据结构与算法
  • 硬件
  • 基础篇
  • MySql
  • Oracle
  • PostgreSQL
  • 达梦
  • Redis
  • Mongodb
  • Hive
  • 数据库比较
  • Spring
  • SpringMvc
  • SpringBoot
  • Hibernate
  • iBatis
  • Mybatis
  • Mybatis-plus
  • Mybatis-plus-join
  • 各个框架对比
  • UML画图
  • 设计须知
  • 开发流程
  • 开发理论
  • 架构体系
  • 设计模式
  • 开源知识
  • 分布式解决方案
  • SpringCloud
  • API网关
  • 注册中心
  • 配置中心
  • 服务调用
  • 分布式事务
  • 消息队列
  • 调度作业
  • 链路追踪
  • 服务保障
  • 搜索引擎Elk
  • 安全框架
  • 监控体系
  • 部署容器
  • Netty
  • Tomcat
  • Nginx
  • 图片云存储
  • 云存储
  • 虚拟机Linux
  • 项目部署
  • 容器部署
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • Bug记录仓库
  • 随笔
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 视频网站
  • 音乐网站
  • 商城网站
  • 论坛网站
  • scrm项目
  • Yudao-cloud
  • RuoYi-Vu-cloud
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
  • Java术语
  • 命名英语
  • 业务英语
  • 表字段英语
  • 包名英语
Github (opens new window)
  • 基础篇

    • 数据库基础知识小结
    • NoSQL基础知识小结
    • 字符集详解
  • Mysql

    • MySQL基础小结
    • 索引篇
    • 思维导图
    • 数据库优化
    • 临时表
    • 实战篇

      • 日常小记
      • JOIN 解析
      • 执行计划解析
      • 内置函数小记
        • case 表达式
        • if 函数
        • coalesce 函数
        • concat 函数
        • date_format 函数
        • substring 函数
        • SUBSTRING_INDEX 函数
        • 函数大全
      • JSON字段处理
      • 时间字段的处理
      • 一文教你如何删除重复记录
      • exists语法解析
    • 读高性能MySQL笔记

      • MySQL架构
  • 达梦DM

    • DM基础入门
    • DM数据类型
    • DM_SQL语言支持的表达式
    • DM表结构修改
  • Redis

    • Redis总结
    • Redis小记
  • 数据库
  • Mysql
  • 实战篇
泪伤荡
2024-07-13
目录

内置函数小记

# 内置函数小记

在日常开发中,MySQL 内置函数在进行逻辑判断、条件筛选以及数据处理方面发挥了关键作用。

以下是一些常用的 MySQL 内置函数,以及它们在日常开发中的应用:

# case 表达式

当在 SQL 查询中使用 CASE 表达式时,你实际上在进行条件逻辑的计算,以根据满足的条件选择不同的结果。

作为表达式,CASE 表达式在执行时会被判定为一个固定值,因此它可以写在聚合函数内部;也正因为它是表达式,所以还可以写在 SELECE 子句、GROUP BY 子句、WHERE 子句、ORDER BY 子句里。

基本语法:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result_else
END
1
2
3
4
5
6
  1. CASE: 表达式的开头。
  2. WHEN condition THEN result: 当满足条件时,返回对应的结果。
  3. ELSE result_else: 当所有条件都不满足时返回的默认结果。
  4. END: 表达式的结束。

示例:

假设有一个学生成绩表,你想为每个学生添加一个等级(A、B、C):

SELECT
    student_name,
    score,
    CASE
        WHEN score >= 90 THEN 'A'
        WHEN score >= 80 THEN 'B'
        ELSE 'C'
    END AS grade
FROM
    student_scores;
1
2
3
4
5
6
7
8
9
10

在这个例子中:

  • 如果分数大于等于 90,那么等级是 'A'。
  • 如果分数大于等于 80 但小于 90,等级是 'B'。
  • 如果分数低于 80,等级是 'C'。

下面详细解释 CASE 表达式:

  1. WHEN score >= 90 THEN 'A':
    • 当分数大于等于 90 时,这个条件成立,CASE 表达式返回 'A'。
  2. WHEN score >= 80 THEN 'B':
    • 当前面的条件不成立而分数大于等于 80 时,这个条件成立,CASE 表达式返回 'B'。
  3. ELSE 'C':
    • 如果前面的条件都不成立,ELSE 子句会返回 'C',作为默认结果。
  4. END:
    • 表达式的结束。

CASE 表达式的优点之一是它的灵活性。你可以根据需要添加任意数量的 WHEN 子句,构建复杂的条件逻辑。在 SELECT 语句中,它还可以用于创建新的列,为查询结果添加更多的信息。

注意:CASE 表达式也支持简写形式,例如 CASE WHEN condition THEN result END,其中不需要使用 WHEN 子句。这样的简写形式适用于只有一个条件的情况。

# if 函数

  • 语法: IF(condition, true_value, false_value)
  • 描述: 根据条件的真假返回不同的值。
  • 应用: 用于在查询中进行条件判断,例如在 SELECT 语句中对某个字段进行条件性赋值。
SELECT name, IF(score >= 90, 'A', 'B') AS grade FROM student_scores;
1

# coalesce 函数

  • 语法: COALESCE(value1, value2, ...)
  • 描述: 返回参数列表中的第一个非 NULL 值。
  • 应用: 用于处理可能为 NULL 的字段,提供默认值或使用备选值。
SELECT name, COALESCE(score, 0) AS score FROM student_scores;
1

# concat 函数

  • 语法: CONCAT(str1, str2, ...)
  • 描述: 将多个字符串连接成一个字符串。
  • 应用: 用于拼接字段值,构造需要的字符串。
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
1

# date_format 函数

  • 语法: DATE_FORMAT(date, format)
  • 描述: 将日期格式化为指定的字符串。
  • 应用: 用于在查询中按照特定的日期格式显示日期。
SELECT name, DATE_FORMAT(birthdate, '%Y-%m-%d') AS formatted_birthdate FROM 
1

# substring 函数

  • 语法: SUBSTRING(str, start, length)
  • 语法: SUBSTRING(str, start, length)
  • 描述: 返回字符串的子串。
  • 应用: 用于从字符串中提取部分内容,例如截取电话号码中的区号。
SELECT name, SUBSTRING(phone_number, 1, 3) AS area_code FROM contacts;

# 例如
phone_number: "1234567890"
SUBSTRING(phone_number, 1, 3): "123"
1
2
3
4
5

# SUBSTRING_INDEX 函数

根据指定的分隔符截取字符串的一部分。

UPDATE t_device
SET 
    channel_id = SUBSTRING_INDEX(device_id, ';', -1),
    device_id = SUBSTRING_INDEX(device_id, ';', 1)
WHERE 
    device_id LIKE '%;%';
1
2
3
4
5
6

# 函数大全

好文分享:

  1. 齐全且实用的MySQL函数使用大全_mysql函数大全以及举例-CSDN博客 (opens new window)
  2. MySQL函数大全,MySQL常用函数汇总 (biancheng.net) (opens new window)
上次更新: 2024/10/26 02:01:17
执行计划解析
JSON字段处理

← 执行计划解析 JSON字段处理→

Theme by Vdoing | Copyright © 2024-2025 泪伤荡 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式