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