Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MySQL切分函数substring() - 大家务必要get到这些点

MySQL切分函数substring() - 大家务必要get到这些点

作者头像
陈哈哈
发布于 2021-10-13 03:52:38
发布于 2021-10-13 03:52:38
2.4K03
代码可运行
举报
文章被收录于专栏:MySQL入坑记MySQL入坑记
运行总次数:3
代码可运行

  MySQL字符串截取函数主要有:left(), right(), substring(), substring_index() 四种。各有其使用场景。今天,让我带大家花几分钟时间来熟知它们,Mark!

小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里

目录

声明一下:在MySQL中,下标索引是从1开始的,而不是像java中从0开始的喔!

一、LEFT() 函数

  LEFT(string,length) ,从字符串string左边第一位开始,截取长度为length个字符。length应大于0,如<=0,返回空字符串。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT LEFT('www.csdn.net',5) from web_info w;
+------------------+
| LEFT('www.csdn.net',5) |
+------------------+
| www.c            |
+------------------+
1 row in set (0.00 sec)

二、RIGHT() 函数

  LEFT(string,length) ,从字符串string右边第一位开始,截取长度为length个字符,仍然是正向顺序截取。length应大于0,如<=0,返回空字符串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT RIGHT('www.csdn.net',5) from web_info w;
+-------------------------+
| RIGHT('www.csdn.net',5) |
+-------------------------+
| n.net                   |
+-------------------------+
1 row in set (0.00 sec)

三、SUBSTRING() 函数

substring()是专门用来对字符串进行切分的函数,主要有两种形式:

  • SUBSTRING(string,position);
  • SUBSTRING(string,position,length);

以下是上述两类语句的SQL标准版本写法,意义相同,它更长,但更具表现力。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SUBSTRING(string FROM position);
SUBSTRING(string FROM position FOR length);

下面让我们来一起看一下SUBSTRING()的两种用法示例;

1.SUBSTRING(string,position)

  1. string:参数是要操作的字符串。
  2. position: 参数是一个"整数",用于指定子串的起始字符,position可以是正整数或负整数。若position大于操作字符串的长度,则返回空字符串。

例如,从“www.csdn.net”字符串中获取子字符串:“csdn.net”,子串的位置必须从5开始,如以下SELECT语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT substring('www.csdn.net',5) from web_info w;
+-----------------------------+
| substring('www.csdn.net',5) |
+-----------------------------+
| csdn.net                    |
+-----------------------------+
1 row in set (0.00 sec)

2.SUBSTRING(string,position,length)

  除了string和position参数之外,SUBSTRING函数还有一个length参数。length是一个正整数,用于指定子字符串的字符数。如果length<=0,那么会返回空字符串。

例如,获取www.csdn.net中的csdn,SQL如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT substring('www.csdn.net',5,4) from web_info w;
+-------------------------------+
| substring('www.csdn.net',5,4) |
+-------------------------------+
| csdn                          |
+-------------------------------+
1 row in set (0.00 sec)

或者通过配置position,从后往前数;SQL如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT substring('www.csdn.net',-8,4) from web_info w;
+--------------------------------+
| substring('www.csdn.net',-8,4) |
+--------------------------------+
| csdn                           |
+--------------------------------+
1 row in set (0.00 sec)

又或者通过SQL标准方式来写,SQL如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT substring('www.csdn.net' FROM 5 FOR 4) from web_info w;
+----------------------------------------+
| substring('www.csdn.net' FROM 5 FOR 4) |
+----------------------------------------+
| csdn                                   |
+----------------------------------------+
1 row in set (0.00 sec)

另外,MySQL中的 mid(), substr() 等价于 substring() 函数哦!

四、SUBSTRING_INDEX() 函数

  SUBSTRING_INDEX(str,delim,count),是一个通过特定标识符"delim"来截取子串的函数,我们日常使用频率是很高的;

  • delim:通过该标识符来进行截取的,delim可以为任意字符,不要为空;
  • count:代表第几次出现;count为正数,代表取标识符出现第count次之前的子串;负数则相反,取标识符出现第count次之后的子串。

例如:‘www.csdn.net’,获取第一次出现标识符’.'前面的子串,SQL如下;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT SUBSTRING_INDEX('www.csdn.net','.',1) from web_info w;
+---------------------------------------+
| SUBSTRING_INDEX('www.csdn.net','.',1) |
+---------------------------------------+
| www                                   |
+---------------------------------------+
1 row in set (0.00 sec)

获取第一次出现标识符’.'后面的子串,SQL如下;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT SUBSTRING_INDEX('www.csdn.net','.',-2) from web_info w;
+----------------------------------------+
| SUBSTRING_INDEX('www.csdn.net','.',-2) |
+----------------------------------------+
| csdn.net                               |
+----------------------------------------+
1 row in set (0.00 sec)

想获取两个’.'中间的呢?可以嵌套一下,SQL如下;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT SUBSTRING_INDEX(substring_index('www.csdn.net','.',2),'.',-1) from web_info w;
+---------------------------------------------------------------+
| SUBSTRING_INDEX(substring_index('www.csdn.net','.',2),'.',-1) |
+---------------------------------------------------------------+
| csdn                                                          |
+---------------------------------------------------------------+
1 row in set (0.00 sec)

产品:emmm…那如果我想o_O o_O 程序员:不,你不想!

五、实战操作

我们以表web_info为测试表,数据如下;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from web_info;
+------+--------+----------------+---------------------+
| w_id | w_name | w_domain       | pub_time            |
+------+--------+----------------+---------------------+
|    1 | CSDN   | www.csdn.net   | 2020-09-03 11:29:29 |
|    5 | 百度   | www.baidu.com  | 2020-09-18 14:37:38 |
|    6 | 淘宝   | www.taobao.com | 2020-09-03 14:37:57 |
+------+--------+----------------+---------------------+
3 rows in set (0.00 sec)

需求1:获取web_info数据的一级域名注:这里仅用于举例说明,与实际会有些出入,如.com.cn那种多级后缀就需另外处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT SUBSTRING_INDEX(w_domain,'.',-2),w.* from web_info w;
+----------------------------------+------+--------+----------------+---------------------+
| SUBSTRING_INDEX(w_domain,'.',-2) | w_id | w_name | w_domain       | pub_time            |
+----------------------------------+------+--------+----------------+---------------------+
| csdn.net                         |    1 | CSDN   | www.csdn.net   | 2020-09-03 11:29:29 |
| baidu.com                        |    5 | 百度   | www.baidu.com  | 2020-09-18 14:37:38 |
| taobao.com                       |    6 | 淘宝   | www.taobao.com | 2020-09-03 14:37:57 |
+----------------------------------+------+--------+----------------+---------------------+
3 rows in set (0.00 sec)

需求2:把w_domain字段数据都改成一级域名;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
update web_info set w_domain = SUBSTRING_INDEX(w_domain,'.',-2) ;

修改后查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT * from web_info;
+------+--------+------------+---------------------+
| w_id | w_name | w_domain   | pub_time            |
+------+--------+------------+---------------------+
|    1 | CSDN   | csdn.net   | 2020-09-03 14:54:59 |
|    5 | 百度   | baidu.com  | 2020-09-03 14:54:59 |
|    6 | 淘宝   | taobao.com | 2020-09-03 14:54:59 |
+------+--------+------------+---------------------+
3 rows in set (0.00 sec)

好了,MySQL的字符串切分函数今天就说到这儿,如果对小伙伴儿有用,请不要白嫖哦~~

附、一张心酸的照片

地震过后幸存的一家人, 在变成废墟的家中聚在一起吃饭。 劫后余生, 才懂得世间最珍贵的莫过于此刻。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于MySQL环境下的数据处理技巧
在一些 MySQL GUI 工具里面,它们提供了创建相同表结构的新表的快捷操作。如果我们用的工具没有提供这些功能,我们也可以把源表的表结构的 SQL 语句拷贝出来,修改成要创建的目标表的表结构,再执行建表语句。
白日梦想家
2021/09/15
1.3K0
SUBSTRING() 与 CONV() 函数1.substring()函数2.conv()函数
MySQL 字符串截取函数:left(), right(), substring(), substring_index()。
用户1250179
2018/08/02
4710
推荐 MySQL 常用函数
来一个实际案例,有可能会记的更清楚一点, 例在MySQL统计一下,都有那些IP连到MySQL内部,及每个IP有多个连接
wubx
2019/02/27
7450
MySQL函数大全及用法示例(一)
1、字符串函数 ascii(str) 返回字符串str的第一个字符的ascii值(str是空串时返回0) mysql> select ascii('2');   -> 50 mysql> select ascii(2);   -> 50 mysql> select ascii('dete');   -> 100
哲洛不闹
2018/09/14
1.1K0
mysql字符串处理函数(二)
replace函数使用方法是replace(s,s1,s2),使用字符串s2替换字符串s中所有的s1。
AsiaYe
2019/11/06
1.2K0
MySQL 常用函数
本文介绍一些常用的 MySQL 内置函数,更多更详细的函数介绍请参阅官方文档 Functions and Operators。
恋喵大鲤鱼
2023/10/12
2280
sql进阶 - 字段也能实现split拆分?
该字段由3部分组成,分别对应ip, user, password,现在要使用sql将该字段拆分,代码如下:
披头
2019/12/26
4.6K0
mysql倒序截取字符串_MySQL数据库之mysql截取字符串与reverse函数
本文主要向大家介绍了MySQL数据库之mysql截取字符串与reverse函数 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。
全栈程序员站长
2022/11/15
2.4K0
MySQL字符串的合并及拆分
按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。
俊才
2020/07/01
6.5K0
MySql字符串拆分实现split功能(字段分割转列、转行)
需求描述 实现的sql 案例演示 字符串拆分: SUBSTRING_INDEX(str, delim, count) 替换函数:replace( str, from_str, to_str) 获取字符串长度:LENGTH( str ) 实现的原理解析 实现sql 正式的原理解析 Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历 第n个字符串。 Step2:根据“,”逗号来拆分字符串,此处利用 SUBSTRING_INDEX(str, delim, count) 函数,最后把结果赋值给 num 字段。 扩展:判断外部值是否在 num列值中 find_in_set instr 字符串转多列
鱼找水需要时间
2023/02/16
16.7K1
MySql字符串拆分实现split功能(字段分割转列、转行)
配置查询与线程追踪函数|全方位认识 sys 系统库
不知不觉中,我们的"全方位认识 sys 系统库" 系列文章已经接近尾声了,在上一篇《字符串与数字转换函数|全方位认识 sys 系统库》中,我们介绍了sys 系统库中用于字符串和数字格式化转换的函数,本期的内容给大家介绍 sys 系统库中的剩余函数,这也是本系列文章的最后一篇。
老叶茶馆
2020/12/15
1.9K0
MySQL 十大常用字符串函数
作者 | 不剪发的Tony老师       责编 | 欧阳姝黎 出品 | CSDN博客 数据库函数是一种具有某种功能的模块,可以接收零个或多个输入值,并且返回一个输出值。MySQL 为我们提供了许多用于处理和分析数据的系统函数,本文给大家介绍 10 个常用的字符串函数,以及相关的其他函数。 CONCAT() CONCAT(str1,str2,…))函数用于返回多个字符串连接之后的字符串,例如: SELECT CONCAT('MySQL', '字符串', '函数') AS str;str
博文视点Broadview
2023/05/06
5300
MySQL 十大常用字符串函数
MySQL常用函数
MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。
星哥玩云
2022/09/15
2.4K0
mysql加解密,substring substring_index函数
SELECT to_base64(AES_ENCRYPT('测试串','key12345678')) ; SELECT AES_DECRYPT(from_base64('iqJIDwYLlcAZ/AP3VvODJg=='),'key12345678');
oktokeep
2024/10/09
1110
正则表达式 - 选择、分组和向后引用
        简单地说,选择操作可在多个可选模式中匹配一个。例如想找出 the 出现过多少次,包括THE、The 和 the 等形式。为此就可以使用选择操作 (the|The|THE) :
用户1148526
2023/05/03
2.3K0
MySQL函数大全
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。
用户7657330
2020/08/14
7160
玩转Mysql系列 - 第10篇:常用的几十个函数详解
如果忽略mode参数,默认情况下WEEK函数将使用default_week_format系统变量的值。 要获取default_week_format变量的当前值,请使用SHOW VARIABLES语句如下:
路人甲Java
2019/09/18
3.1K0
MYSQL字符串截取总结:LEFT、RIGHT、SUBSTRING、SUBSTRING
在实际的项目开发中有时会有对数据库某字段截取部分的需求,这种场景有时直接通过数据库操作来实现比通过代码实现要更方便快捷些,mysql有很多字符串函数可以用来处理这些需求,如Mysql字符串截取总结:left()、right()、substring()、substring_index()。 一.从左开始截取字符串 用法:left(str, length),即:left(被截取字符串, 截取长度) 结果为:www.yuan 二.从右开始截取字符串 用法:right(str, length),即:right(
企鹅号小编
2018/01/25
1.5K0
MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用
在MySQL数据库中,函数是一种非常强大的功能,可以帮助我们对数据进行各种操作,例如进行数值计算、字符串格式化、日期时间处理等等。本文将全面介绍MySQL中的单行函数,涵盖数值函数、字符串函数、日期时间函数和加密解密函数等多个方面,帮助读者更好地理解和应用MySQL中的单行函数。
默 语
2024/11/20
1240
MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用
MySQL 自定义 split 存储过程
        MySQL 没有提供 split 函数,但可以自己建立一个存储过程,将具有固定分隔符的字符串转成多行。之所以不能使用自定义函数实现此功能,是因为 MySQL 的自定义函数自能返回标量值,不能返回多行结果集。
用户1148526
2023/10/14
4540
相关推荐
基于MySQL环境下的数据处理技巧
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验