背景
今天中午做需求的时候,会根据银行卡号的上位来判断是哪家银行,每个银行应该剪切的位数都不一样。 那时,我想到了SUBSTR
使用数据库侦听字符串SUBSTR函数
假设您有以下表格结构: 表名tlk_bnkld_card )
写sql语句时可以看到很多substr函数的提示。 每个人根据需要进行选择。
str表示被剪切的字段
pos表示开始的下标
len表示剪切的长度
使用substr(strfromposforlen ) :
1 select substr (idtf _ value from1for2) IDT fvalue2from tlk _ bn kld _ card3where1=1
剪切字段idtf_value,从第一位开始剪切,剪切2位
执行结果
使用substr(strfrompos )
1selectsubstr(IDTF_valuefrom2) IDT fvalue2from tlk _ bn kld _ card3where1=1
剪切字段idtf_value,从第二位剪切到末尾
执行结果:
SUBSTRING与SUBSTR相差不大,输出结果一致
1substr(str,pos )2substr(str,pos,len )3substring ) strfromposforlen )4substring ) strfrompos )5substring ) str,5
这些函数的用法与上面的两种类似。 见上文;
使用substring_index(str,delim,count )函数
使用规则:
SUBSTRING_INDEX (“剪切有用部分的字符串”、“剪切作为数据依据的字符的字符”、字符的剪切位置n ) )。
例如:
1 select substring _ index (idtf _ value,'4',2 ) IDT fvalue2from tlk _ bn kld _ card3whereidtf _ value=' 392454 '
用'4'分割字符串,剪切从开头到第二个“4”的字符串并输出
执行结果
注意:
如果像这样有负号的话
1 select substring _ index (idtf _ value,'4',-2) IDT fvalue2from tlk _ bn kld _ card3whereidtf _ value=' 392454 '
剪切的时候说从后向前剪切,从后到第二个前剪切
执行结果
欢迎关注大侠号,不定时晒衣服,只做有价值的输出
作者: Dawnzhang
资料来源: https://www.cn blogs.com/clwydjgs/p/9324255.html
版权:本文版权归作者所有
转载:欢迎转载,但未经作者同意,本声明应予保留;并对文章提供原文联系; 否则就要追究法律责任