您的位置:首页 > 数据库

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

2018-07-17 16:52 447 查看

背景

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

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

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

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

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

    pos表示开始的下标

    len表示截取的长度

 

 

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

SELECT SUBSTR(idtf_value FROM 1 FOR 2) idtfValue
FROM tlk_bnkld_card
WHERE 1=1

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

执行结果

SUBSTR(str FROM pos) 的使用

SELECT SUBSTR(idtf_value  FROM 2) idtfValue
FROM tlk_bnkld_card
WHERE 1=1

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

执行结果:

  

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

SUBSTR(str,pos)
SUBSTR(str,pos,len)
SUBSTRING(str FROM pos FOR len)
SUBSTRING(str FROM pos)
SUBSTRING(str,pos)
SUBSTRING(str,pos,len)

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

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

用法规则:

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

例如:

SELECT SUBSTRING_INDEX(idtf_value,'4',2) idtfValue
FROM tlk_bnkld_card
WHERE idtf_value='392454'

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

执行结果

 

 注意:

  假如有负号像这样

SELECT SUBSTRING_INDEX(idtf_value,'4',-2) idtfValue
FROM tlk_bnkld_card
WHERE idtf_value='392454'

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

执行结果

 

 

作者:Dawnzhang 
出处:https://www.cnblogs.com/clwydjgs/p/9324255.html
版权:本文版权归作者
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: