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.4K00
代码可运行
举报
文章被收录于专栏:MySQL入坑记MySQL入坑记
运行总次数:0
代码可运行

  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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在Typecho任意主题上通过公众号发送说说、碎语、时光机、日记
去年年底研究完我若为王的文章后,写了一篇操作文章。今年看上去,依旧觉得,复杂了。 于是在这次换了主题后,再次重新折腾一番。能精简的地方,就尽量减少复杂度。
目的地-Destination
2023/03/06
9970
在Typecho任意主题上通过公众号发送说说、碎语、时光机、日记
用微信公众号快速发布“说说”,源自Typecho handsome主题的时光机。
在此鸣谢: Jdeal的 我的网站“时光机” 一文 我若为王的 handsome主题时光机微信发送系统 一文
目的地-Destination
2023/03/06
1.2K4
用微信公众号快速发布“说说”,源自Typecho handsome主题的时光机。
华为虚拟化软件在GPU上的总结
GPU虚拟化驱动:NVIDIA-GRID-Linux-KVM-470.63-470.63.01-471.68
用户10312993
2023/03/14
3.2K0
dhcp snooping option 82_dhcpsnooping的原理配置案例
架设DHCP服务器可以为客户端自动分配IP地址、掩码、默认网关、DNS服务器等网络参数,简化了网络配置,提高了管理效率。但在DHCP服务的管理上存在一些问题,常见的有:
全栈程序员站长
2022/11/03
9750
6000字加图文 | 抓包带你深入了解网关到底起什么样的作用?不同网段通信的过程详解
不同网段就分两种了,同一个局域网下面,不同网段之间的通信,或者是从局域网去往互联网的通信,那么这个过程又是怎么样的呢?
网络之路一天
2024/01/08
4670
6000字加图文 | 抓包带你深入了解网关到底起什么样的作用?不同网段通信的过程详解
全局唯一ID发号器的几个思路
标识(ID / Identifier)是无处不在的,生成标识的主体是人,那么它就是一个命名过程,如果是计算机,那么它就是一个生成过程。如何保证分布式系统下,并行生成标识的唯一与标识的命名空间有着密不可分的关系。在世界里,「潜意识下的命名空间里,相对的唯一标识」是普遍存在的,例如:
sunsky
2020/08/20
9390
全局唯一ID发号器的几个思路
互联网金融的信息安全(二)安全需求
不管是内部人员还是第三方,访问系统没有固定的设施,没有固定的网络隔离,有输入输出信息的交互,放在一个能被访问系统的边缘,必定会产生泄露风险。
牛油果
2019/09/23
1.2K0
互联网金融的信息安全(二)安全需求
2019-7-17-如何利用c#找到物理网卡的Mac地址
我们经常会在代码中查找设备的Mac地址,以确认设备的唯一性。但是如果你的设备安装了一些虚拟机,这个时候就会比较麻烦了
黄腾霄
2020/06/10
1.4K0
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-Android使用SmartConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
这节测试一下CH579M通过串口AT指令控制ESP8266(WiFi)连接MQTT服务器;
杨奉武
2022/04/29
1K0
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-Android使用SmartConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
你想要了解的黑客入门知识在这里
开篇声明,小萌新创作这篇文章的初衷只是想介绍一些关于黑客方面的基础知识,从读者的角度去满足一些计算机爱好者的好奇心,那我们就开始吧!
全栈程序员站长
2022/08/22
9370
你想要了解的黑客入门知识在这里
微信硬件平台对接--蓝牙
http://www.vxzsk.com/142.html这个网站的教程相当详细,本文只是自己测试总结一些相关内容。 平台接入流程 http://iot.weixin.qq.com/wiki/new/
小帅丶
2018/02/08
4.3K0
微信硬件平台对接--蓝牙
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
这节测试一下CH579M通过串口AT指令控制ESP8266(WiFi)连接MQTT服务器;
杨奉武
2022/04/29
7020
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
2-STM32+ESP8266+AIR202基本控制篇-整体运行测试-APP使用SmartConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
这节测试一下android使用SmartConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
杨奉武
2022/04/29
5910
2-STM32+ESP8266+AIR202基本控制篇-整体运行测试-APP使用SmartConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-Android使用APUConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
这节测试一下CH579M通过串口AT指令控制ESP8266(WiFi)连接MQTT服务器;
杨奉武
2022/04/29
5270
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-Android使用APUConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
0-STM32+ESP8266+Air302基本控制篇(自建物联网平台)-整体运行测试-APP使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
说明 这节测试一下Android使用APUConfig配网绑定ESP8266,并通过MQTT和模组实现远程通信控制 这一节作为板子的整体功能测试,用户下载这一节的程序用来测试基本控制篇实现的基本功能 还有就是测试一下板子是否工作正常. 提示 单片机都是使用串口2和模组进行通信, 开发板只安装上WiFi模组. 测试准备工作 1.下载这节程序到单片机 2.单片机工程目录 3.Hex文件位置 4.使用单片机串口1打印串口日志(115200) 正常情况下会打印 5.安装手机APP 6.手
杨奉武
2022/04/29
3440
0-STM32+ESP8266+Air302基本控制篇(自建物联网平台)-整体运行测试-APP使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
2-STM32F103+ML307(中移4G Cat1)基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定ML307,并通过MQTT实现远程通信控制(单片机处理MQTT协议)
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/ML307/my.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
杨奉武
2024/09/05
3990
2-STM32F103+ML307(中移4G Cat1)基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定ML307,并通过MQTT实现远程通信控制(单片机处理MQTT协议)
计算机网络基础(未完待续)
操作系统是管理和控制计算机硬件与软件资源的应用程序,任何其他软件都必须在操作系统的支持下才能运行。
贾维斯Echo
2023/10/18
3440
计算机网络基础(未完待续)
2-STM32+ESP8266+AIR202基本控制篇-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
说明 这节测试一下微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制 测试准备工作 1.不同版本的PCB需要做不同的操作 2.x版本需要做如下操作:
杨奉武
2021/07/27
9841
网工必备网络排错管理工具之IP_MAC地址工具
其目的在于帮助网络管理员,全方位地解决网络建设与管理中的各种实际问题,其目的在于将网络理论与实际应用相结合,提高工程技术人员分析和解决具体问题的能力,将所学变为所用,将书本知识变为操作技能。
网络工程师笔记
2021/05/17
2.7K0
网工必备网络排错管理工具之IP_MAC地址工具
0-STM32+ESP8266+Air302基本控制篇(自建物联网平台)-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
说明 这节测试一下微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和模组实现远程通信控制 这一节作为板子的整体功能测试,用户下载这一节的程序用来测试基本控制篇实现的基本功能 还有就是测试一下板子是否工作正常. 提示 单片机都是使用串口2和模组进行通信, 开发板只安装上WiFi模组. 测试准备工作 1.下载这节程序到单片机 2.单片机工程目录 3.Hex文件位置 4.使用单片机串口1打印串口日志(115200) 正常情况下会打印 5.安装微信小程序(使用开发工具导
杨奉武
2022/04/29
5130
0-STM32+ESP8266+Air302基本控制篇(自建物联网平台)-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
推荐阅读
在Typecho任意主题上通过公众号发送说说、碎语、时光机、日记
9970
用微信公众号快速发布“说说”,源自Typecho handsome主题的时光机。
1.2K4
华为虚拟化软件在GPU上的总结
3.2K0
dhcp snooping option 82_dhcpsnooping的原理配置案例
9750
6000字加图文 | 抓包带你深入了解网关到底起什么样的作用?不同网段通信的过程详解
4670
全局唯一ID发号器的几个思路
9390
互联网金融的信息安全(二)安全需求
1.2K0
2019-7-17-如何利用c#找到物理网卡的Mac地址
1.4K0
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-Android使用SmartConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
1K0
你想要了解的黑客入门知识在这里
9370
微信硬件平台对接--蓝牙
4.3K0
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
7020
2-STM32+ESP8266+AIR202基本控制篇-整体运行测试-APP使用SmartConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
5910
2-CH579M+ESP8266(WiFi)基本控制篇-整体运行测试-Android使用APUConfig配网绑定ESP8266,并通过MQTT和单片机CH579M实现远程通信控制
5270
0-STM32+ESP8266+Air302基本控制篇(自建物联网平台)-整体运行测试-APP使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
3440
2-STM32F103+ML307(中移4G Cat1)基本控制篇(自建物联网平台)-整体运行测试-Android扫码绑定ML307,并通过MQTT实现远程通信控制(单片机处理MQTT协议)
3990
计算机网络基础(未完待续)
3440
2-STM32+ESP8266+AIR202基本控制篇-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
9841
网工必备网络排错管理工具之IP_MAC地址工具
2.7K0
0-STM32+ESP8266+Air302基本控制篇(自建物联网平台)-整体运行测试-微信小程序使用APUConfig配网绑定ESP8266,并通过MQTT和ESP8266实现远程通信控制
5130
相关推荐
在Typecho任意主题上通过公众号发送说说、碎语、时光机、日记
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验