instr和substr的使用

最近经常能碰到截取某一列字段显示的问题,为了防止忘记还是写在博客里吧:

substr (字段或字符串,起始位置,截取个数):  截取某一列的一部分字段,返回截取的值

例如:

  某一列的值为 

  instiname

 中国邮政集团公司黑河市分公司
 中国邮政集团公司伊春市分公司
 中国邮政集团公司哈尔滨市阿城机要公司
 中国邮政集团公司牡丹江市分公司市场经营部
 中国邮政集团公司绥化市代理金融业务局
 中国邮政集团公司大兴安岭地区代理金融业务局
 中国邮政集团公司鸡西市分公司中邮保险局
 中国邮政集团公司七台河市分公司营销客维中心
 中国邮政集团公司鸡西市报刊发行局业务班
 中国邮政集团公司大庆市分公司工会办公室

-------------------------------------------------------------------

select  substr(instiname,1,8) from dual 

  :返回的结果为

中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司
中国邮政集团公司

instr (字段或字符串,字段中的某个字符或字符串,起始查找位置(默认是1),第几次出现(默认是1)): 返回值为该字符或字符串出现的位置

例如:

  某一列的值为 

  instiname

 中国邮政集团公司黑河市分公司
 中国邮政集团公司伊春市分公司
 中国邮政集团公司哈尔滨市阿城机要公司
 中国邮政集团公司牡丹江市分公司市场经营部
 中国邮政集团公司绥化市代理金融业务局
 中国邮政集团公司大兴安岭地区代理金融业务局
 中国邮政集团公司鸡西市分公司中邮保险局
 中国邮政集团公司七台河市分公司营销客维中心
 中国邮政集团公司鸡西市报刊发行局业务班
 中国邮政集团公司大庆市分公司工会办公室

-------------------------------------------------------------------

select  instr(instiname,'司') from dual

  返回结果为:

 8
 8
 8
 8
 8
 8
 8
 8
 8
 8

select  instr(instiname,'司',9) from dual  :从第9个字符开始查找‘司’字

   返回结果为:

14
14
18
15
0
0
14
15
0
14

注意:当‘起始位置’不大于要查找的第一个字符的位置时,返回的值都将是第一个字符的位置,如果‘起始位置’大于要查找的第一个字符的位置时,返回的值都将是第2个字符的位置,依此类推……(但是也是以第一个字符开始计数)

select  instr(instiname,'司',1,2) from dual  :从第一个字符查找第二个‘司’的位置。

 返回结果为:

14
14
18
15
0
0
14
15
0
14

猜你喜欢

转载自www.cnblogs.com/h-guang/p/9339805.html
今日推荐