SQL的substring_index()用法实例(MySQL字符串截取)
作者:小白修炼晋级中 发布时间:2024-01-27 19:30:19
1.substring_index函数的语法及其用法
(1)语法:substring_index(string,sep,num)
即substring_index(字符串,分隔符,序号)
参数说明
string:用于截取目标字符串的字符串。可为字段,表达式等。
sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等。
num:序号,为非0整数。若为整数则表示从左到右数,若为负数则从右到左数。比如“www.mysql.com”截取字符‘www’,分割符为“.”,从左到右序号为1,即substring_index("www.mysql.com",'.',1);若从右开始获取“com”则为序号为-1即substring_index("www.mysql.com",'.',-1)
(2)用于截取目标字符串。
2.实例
(1)从某字段截取目标字符串。
例:现有一个学生信息表student,详细地址address储存省、市、县等由逗号隔开的地址信息,比如“XX省,XX市,XX区,...,XXX号”。由于某种原因没有学生所在省信息需要获取,同时获取学生姓名name,性别sex,年龄age。
select name,sex,age,
substring_index(address,',',1) as province
from student
(2)与cast函数结合使用截取某字符串并转为目标格式。
例:现有一张订单信息data,由于2022-03-04日期 之后存储日期信息的格式出错,日期前加了一些前缀,并用空格隔开,比如“13d 2022-02-01”,需要获取该表2022-03-04之后具体日期信息,同时获取单子offer_id,以及产品名name。
select cast(substring_index(ctime,' ',1) as date) as dt,
offer_id,name
FROM data
WHERE substring_index(ctime,' ',1)>= '2022-03-04'
附:结合group_concat(),把多条记录回显到一条,再做分割
比如一个用户可以维护多条学历信息记录,现在这个人维护了一所本科院校,俩所研究生院校,一所博士院校,现需要展示最高的一个学校,或者需要展示出所有的研究生院校。
/*研究生毕业院校*/
IF(
SUBSTRING_INDEX(
GROUP_CONCAT(
CASE
WHEN a02.R0205 = '11' //表示研究生
THEN a02.R0203
ELSE ','
END
ORDER BY a02.R0205, a02.R0206
),
',',
2
) = ',' // 如果没有
,'', // 返回空,否则,返回下面语句
SUBSTRING_INDEX(
GROUP_CONCAT(
CASE
WHEN a02.R0205 = '21'
THEN a02.R0203
END
ORDER BY a02.R0205, a02.R0206
),
',',
2)
) AS dxbyyx,
结果:
中国人民大学,清华大学
SQL的cast函数用法可参考SQL的CAST()——转换数据类型
来源:https://blog.csdn.net/weixin_50853979/article/details/124669207


猜你喜欢
- 公司安排了个任务,爬取ppt资源,我爬取后打开ppt发现,最后一页是站点的宣传,需要删除。仔细阅读了python-pptx的api和国内的教
- 一、前言不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一
- 最近跟着OpenCV2-Python-Tutorials在学习python_opencv中直方图的反向投影时,第一种方法是使用numpy实现
- 跟着节奏继续来探索fixtures的灵活性。一、一个测试函数/fixture一次请求多个fixture在测试函数和fixture函数中,每一
- 前言select作为Go chan通信的重要监听工具,有着很广泛的使用场景。select的使用主要是搭配通信case使用,表面上看,只是简单
- 前言python下的setuptools带有一个easy_install的工具,在安装python的每三方模块、工具时很有用,也很方便。安装
- 在写代码的时候,往往会漏掉日志这个关键因素,导致功能在使用的时候出错却无法溯源。其实,只需要写一个非常简单的日志装饰器,我们就能大大提升排查
- 概要介绍mmpi,是一款使用python实现的开源邮件快速检测工具库,基于community框架设计开发。mmpi支持对邮件头、邮件正文、邮
- (一)单一独立的参数如果命令行输入的参数都是各自单一独立的,直接用个循环把所有参数逐一读出来就行了。sys模块里面直接用args = sys
- 很多小伙伴对于slice参数的概念理解停留在概念上,切片的参数有三个,分别是step 、start 、stop 。因为参数的值也是多变的,所
- 本文实例为大家分享了python实现人脸签到系统的具体代码,供大家参考,具体内容如下简易版人脸签到/签退系统管理员可进行录入人脸操作,以及导
- cv2库在opencv库内,因此需要下载opencv-python1、打开windows命令行:win+Rcmd2、更新pip版本(不一定要
- 1、python内置的sqlite3模块,创建数据库中的表,并向表中插入数据,从表中取出所有行,以及输出行的数量。#!/usr/bin/en
- 我的环境,Windows10,Python3.6.3查询了很多有关资料,发现都是Python2版本操作Word文件的,所以就写了这篇短小的文
- 本章的前面讨论如何使用SQL向一个表中插入数据。但是,如果你需要向一个表中添加许多条记录,使用SQL语句输入数据是很不方便的。幸运的是,My
- 通常情况下我们在更新数据时需要先从数据库里将原数据取出后放在内存里,然后编辑某些字段或属性,最后提交更新数据库。使用F方法则可以帮助我们避免
- 本文实例讲述了Python实现的文本简单可逆加密算法。分享给大家供大家参考,具体如下:其实很简单,就是把一段文本每个字符都通过某种方式改变(
- 基本介绍约束用于确保数据库的数据满足特定的商业规则在mysql中,约束包括:not null,unique,primary key,fore
- 之前在使用Pandas处理csv文件时,发现如果文件名为中文,则会报错:OSError: Initializing from file fa
- 我就废话不多说了,大家还是直接看操作吧~<p>联系电话:<a :href="'tel:' + i