MySQL切分函数substring()---大家务必要get到这些点_软件开发Java的博客-程序员秘密

技术标签: 程序员  面试  java  后端  

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

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如下:

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如下:

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如下:

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如下;

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如下;

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如下;

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
程序员:不,你不想!

image.png

五、实战操作

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

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

【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

:37:57 |
±-----±-------±---------------±--------------------+
3 rows in set (0.00 sec)

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

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)

om | 2020-09-03 14:37:57 |
±---------------------------------±-----±-------±---------------±--------------------+
3 rows in set (0.00 sec)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_63174618/article/details/121037813

智能推荐

Qt 集成miniblink浏览器库之3 C++ js相互调用_很菜但努力的博客-程序员秘密

上一节已经将miniblink集成到qt,实现了浏览器得基本调用接口,这一节介绍如何实现通信。1.C++调用jsminiblink接口wkeRunJSW可以实现C++调用js例如我们在js中写一个绑定到window的函数openDialog就可以这样调用wkeRunJSW("window.openDialog()");这跟cef,QtWebEngine完全一样2.js调用C++首先我们写一个测试的html如下:&lt;html&gt;&lt;head&gt;..

使用OpenCV测量图像中物体之间的距离_小白学视觉的博客-程序员秘密

点击上方“小白学视觉”,选择加&#34;星标&#34;或“置顶”重磅干货,第一时间送达本文转自:opencv学堂本文来自光头哥哥的博客【Measuring distance betwe...

CodeForces - 890A ACM ICPC_weixin_30519071的博客-程序员秘密

ACM ICPCIn a small but very proud high school it was decided to win ACM ICPC. This goal requires to compose as many teams of three as possible, but since there were only 6 students ...

制作类似csdn网站的导航栏_codroid的博客-程序员秘密

首先写html代码,如下:导航栏 导航1 导航2 导航3 导航4 导航5 导航6 导航7 导航8 导航9 导航0 然后

VPP/What is VPP?_尚先生的博客的博客-程序员秘密

1Introduction 1.1Modular, Flexible, and Extensible 1.2Feature Rich 2Why is it called vector processing? 3Example Use Case: VPP as a vSwitch/vRouter 3.1Local Programmability 3.2Remote Programmability 3.3Sample Data Plane Management Agent...

随便推点

linux redis后台启动及自启动脚本_chuyi1926的博客-程序员秘密

#!/bin/sh# chkconfig: 2345 10 90# description: Start and Stop redisPATH=/usr/local/binREDISPORT=6379EXEC=/usr/local/bin/redis-serverREDIS_CL...

深度学习笔记(五):欠拟合、过拟合_AI 菌的博客-程序员秘密

前言这里先介绍一个名词,模型容量:通俗的讲,模型的容量或表达能力,是指模型拟合复杂函数的能力。当模型的容量越大时,函数的假设空间就越大,就越有可能找到一个函数更逼近真实分布的函数模型。注:在卷积神经网络中,模型容量通常由网络层数、待优化参数的量来衡量。欠拟合、过拟合(1)当模型的容量过大时,网络模型除了学习到训练集数据的模态之外,还把额外的观测误差也学习进来,导致学习的模型在训练集上面表现...

从Hive的日志文件超大引出磁盘满问题并追踪出NameNode 安全模式的问题与处理_hive metastore server 最大日志文件备份_RunningShare的博客-程序员秘密

目录发现NameNode安全模式问题初步判断是磁盘满导致安全模式NameNode安全模式解释补充解释尝试重启DataNode重启NameNode总结发现NameNode安全模式问题一次偶然的机会,准备看下Hive的版本,发现无法执行hive脚本,发现Hive命令无法正常进入hive命令行,报错信息如下:ls: cannot access /usr...

推荐文章

热门文章

相关标签