MySQL中的`SUBSTRING()`和`MID()`函数:精准抽取字符串中的子串

2024-09-07 04:52

本文主要是介绍MySQL中的`SUBSTRING()`和`MID()`函数:精准抽取字符串中的子串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在数据库操作中,经常需要从存储的字符串中提取出特定的部分,比如从用户全名中提取姓氏、从日期字符串中提取年份等。MySQL提供了SUBSTRING()MID()两个函数,它们的功能几乎完全相同,都是用来从字符串中抽取子串的。本文将详细介绍这两个函数的用法、参数以及在实际场景中的应用。

一、SUBSTRING()MID()函数的基本语法

1. SUBSTRING()函数

SUBSTRING()函数的基本语法如下:

SUBSTRING(str, pos, len)
  • str:需要从中抽取子串的原始字符串。
  • pos:子串开始的位置(注意:MySQL中的位置是从1开始的,不是从0开始)。
  • len:(可选)子串的长度。如果省略此参数,SUBSTRING()函数将返回从pos位置开始到字符串末尾的所有字符。

2. MID()函数

MID()函数的基本语法与SUBSTRING()相同:

MID(str, pos, len)
  • 参数含义与SUBSTRING()中的相同。

注意事项

  • 如果pos参数小于1,则SUBSTRING()MID()函数都将返回空字符串。
  • 如果pos参数大于字符串的长度,则函数同样返回空字符串。
  • 如果len参数小于0,则函数将返回空字符串。

二、实际应用场景

1. 从用户全名中提取姓氏

假设有一个用户表users,其中包含一个fullname字段,存储用户的全名(如"张三丰")。如果你想从全名中提取出姓氏(假设姓氏总是第一个字),可以使用SUBSTRING()MID()函数:

SELECT SUBSTRING(fullname, 1, 1) AS surname FROM users;
-- 或者
SELECT MID(fullname, 1, 1) AS surname FROM users;

这将返回每个用户的姓氏(在这个例子中,只返回了姓氏的第一个字)。

2. 从日期字符串中提取年份

假设有一个订单表orders,其中包含一个order_date字段,存储订单的日期(格式为"YYYY-MM-DD")。如果你想从日期字符串中提取年份,可以这样做:

SELECT SUBSTRING(order_date, 1, 4) AS order_year FROM orders;
-- 或者
SELECT MID(order_date, 1, 4) AS order_year FROM orders;

这将返回每个订单的年份部分。

3. 截取字符串的特定部分

假设你有一个包含文章内容的字段content,并且你想从每篇文章中截取前100个字符作为预览。可以使用SUBSTRING()MID()函数结合LENGTH()CHAR_LENGTH()函数(如果需要按字符数而不是字节数截取)来实现:

SELECT SUBSTRING(content, 1, 100) AS preview FROM articles;
-- 或者
SELECT MID(content, 1, 100) AS preview FROM articles;

注意:如果文章内容少于100个字符,这两个函数将返回完整的文章内容。

三、总结

SUBSTRING()MID()函数是MySQL中非常实用的字符串处理函数,它们允许你轻松地从字符串中抽取子串。通过指定起始位置和长度,你可以精确地获取到所需的信息。无论是从用户全名中提取姓氏,还是从日期字符串中提取年份,这两个函数都能提供极大的便利。掌握它们的用法,将大大提升你在数据库操作中处理字符串的能力。

这篇关于MySQL中的`SUBSTRING()`和`MID()`函数:精准抽取字符串中的子串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144106

相关文章

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语