mysql 截串substr_数据库截取字符串SUBSTR函数的使用

背景

今天中午做需求的时候,有类似于根据银行卡卡号的前几位判断出是哪个银行的情况,每个银行需要截取的位数都不一样,这时我就想到了SUBSTR

数据库截取字符串SUBSTR函数的使用

假设有一个表的结构如下(表名tlk_bnkld_card)

42e9d3cea8636b439b58e3a99df4ee84.png

写sql语句的时候就能看到有很多的substr函数的提示,各人根据需求选用。

bcad56a66187157a6e4fca710eb1a43a.png

其中的 str表示被截取的字段

pos表示开始的下标

len表示截取的长度

SUBSTR(str FROM pos FOR len)的使用:

1 SELECT SUBSTR(idtf_value FROM 1 FOR 2) idtfValue2 FROMtlk_bnkld_card3 WHERE 1=1

截取字段idtf_value ,从第一位开始截取,截取两位

执行结果

82a445fc0c8696b27fad082926718d6a.png

SUBSTR(str FROM pos) 的使用

1 SELECT SUBSTR(idtf_value FROM 2) idtfValue2 FROMtlk_bnkld_card3 WHERE 1=1

截取字段idtf_value ,从第二位截取到结束

执行结果:

0b0837c036b42a0ecedbf6c1eb8ba1ff.png

SUBSTRING与SUBSTR区别不大,输出结果一致;

1 SUBSTR(str,pos)2 SUBSTR(str,pos,len)3 SUBSTRING(str FROM pos FOR len)4 SUBSTRING(str FROMpos)5 SUBSTRING(str,pos)6 SUBSTRING(str,pos,len)

这几个函数的用法和上面的两种类似,参见上述;

SUBSTRING_INDEX(str,delim,count)函数的用法

用法规则:

SUBSTRING_INDEX(“待截取有用部分的字符串”,“截取数据依据的字符”,截取字符的位置N)

例如:

1 SELECT SUBSTRING_INDEX(idtf_value,'4',2) idtfValue2 FROMtlk_bnkld_card3 WHERE idtf_value='392454'

将字符串用"4"分割开,截取从开始到第二个“4”之前的字符串输出

执行结果

b4e136eb91293df497c7c79490533aef.png

注意:

假如有负号像这样

1 SELECT SUBSTRING_INDEX(idtf_value,'4',-2) idtfValue2 FROMtlk_bnkld_card3 WHERE idtf_value='392454'

截取时就说从后往前截取,截取到从后面数的第二个之前

执行结果

cf54456ae80daf5e55f1b6b087af4838.png

1ef1594dc7fb6d23fc00d24864950d69.png

欢迎大家关注公众号,不定时干货,只做有价值的输出

作者:Dawnzhang

出处:https://www.cnblogs.com/clwydjgs/p/9324255.html

版权:本文版权归作者

转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值