记一次MySQL数据截取

记一次MySQL数据截取


前言

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


一、数据样式

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

截取数据分析

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

分析:
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是一个大帅帅帅哥')

LENGTH

CHAR_LENGTH(str) 返回值为字符

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

CHAR_LENGTH

结果

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

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值