记一次MySQL数据截取

tech2024-03-29  70

记一次MySQL数据截取

文章目录

记一次MySQL数据截取前言一、数据样式截取数据分析 二、分析处理1.MySQL截取函数2.数据长度获取函数 结果总结


前言

由于某些原因要提取工单标题中的人员英文名,通过SQL截取快速筛选数据


一、数据样式

数据示例: [系统自动触发]Apple是一个大帅帅帅哥 [系统自动触发]peanut是一个大帅帅帅哥 ······ 要求:取出英文Apple,peanut

截取数据分析

字符串前缀固定8位:[系统自动触发]字符串后缀固定8位:是一个大帅帅帅哥中间英文长度不确定

分析: 1、从左边9开始始截取结束:peanut是一个大帅帅帅哥 2、从左边1开始截取到(长度-8)

二、分析处理

1.MySQL截取函数

代码如下(示例):

1、left(str,index) 从左边第index开始截取

select left('[系统自动触发]peanut是一个大帅帅帅哥', 11);

2、right(str,index)从右边第index开始截取

select right('[系统自动触发]peanut是一个大帅帅帅哥', 11);

3、substring(str,index)当index>0从左边开始截取直到结束 当index<0从右边开始截取直到结束 当index=0返回空

select substring('[系统自动触发]peanut是一个大帅帅帅哥', 11)

4、substring(str,index,len) 截取str,从index开始,截取len长度

select substring('[系统自动触发]peanut是一个大帅帅帅哥', 9,5)

5、substring_index(str,delim,count),str是要截取的字符串,delim是截取的字段 count是从哪里开始截取(为0则是左边第0个开始,1位左边开始第一个选取左边的,-1从右边第一个开始选取右边的

select substring_index('[系统自动触发]peanut是一个大帅帅帅哥', 'p',1) select substring_index('[系统自动触发]peanut是一个大帅帅帅哥', 'p',-1)

6、subdate(date,day)截取时间,时间减去后面的day

select subdate(SYSDATE(),1)

7、subtime(expr1,expr2) 时分秒expr1-expr2

SELECT subtime(SYSDATE(),'1:1:1')

2.数据长度获取函数

length: 是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符

SELECT LENGTH('[系统自动触发]peanut是一个大帅帅帅哥')

CHAR_LENGTH(str) 返回值为字符

SELECT CHAR_LENGTH('[系统自动触发]peanut是一个大帅帅帅哥')

结果

SELECT substring('[系统自动触发]peanut是一个大帅帅帅哥',9,(CHAR_LENGTH('[系统自动触发]peanut是一个大帅帅帅哥') -16))

总结

MySQL的函数还是挺多的,这次处理数据用了数据截取substring,字段长度CHAR_LENGTH

最新回复(0)