Mysql基础入门(三)数据上下限截取


给定如下salary数据,我们希望能够将salary的上下限截取,新增两列上下限数据,例如8k-15k我们希望拆分为8和15这两列。
在这里插入图片描述

1.薪资下限截取

  • 首先,用locate获取第一个k的位置
    locate(str1,str2,pos)
    返回子串str1从位置pos处开始,第一次出现在字符串str2中的位置,pos不写默认从头找

代码

SELECT salary,locate('k',salary)
FROM data.dataanalyst_sql
;
  • 接着,用left函数截取k位置之前的数据
    left(str,n)
    截取str左边n个字符
SELECT salary ,locate('k',salary),
left(salary,locate('k',salary)-1) as "薪资下限"
FROM data.dataanalyst_sql
;
  • 最后,得到薪资上限如下
    在这里插入图片描述

2.薪资下限截取

  • 首先,用locate获取第二个k的位置和-的位置
    从salary第四个位置开始查找k,这样就把第一个k排除在外
SELECT salary,
locate('k',salary,4),
locate('-',salary)
FROM data.dataanalyst_sql
;
  • 接着,用substring函数截取k位置之前的数据
    substring(str,index,len)
    从str的index位置截取len个字符

截取位置:-的位置+1
截取长度:第二个k下标--下标-1

SELECT salary,
locate('k',salary,4),
locate('-',salary),
substring(salary,locate('-',salary)+1,locate('k',salary,4)-locate('-',salary)-1)
FROM data.dataanalyst_sql
;

结果如下

在这里插入图片描述可以看到,会有如15k以上的“脏数据”,换种思路,我们将截取长度换成:

截取位置:-的位置+1
截取长度:总长度--下标-1

SELECT salary,
locate('k',salary,4),
locate('-',salary),
substring(salary,locate('-',salary)+1,length(salary)-locate('-',salary)-1)
FROM data.dataanalyst_sql
;

结果如下
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值