oracle substr()截取汉字?

oracle 11,用substr截取汉子,我发现这个截取没有什么规律啊?有地址为
北京市石景山区石景山路
广东省深圳市罗湖区XXX
上海市浦东区xxxxxxxx
把个省截取出来,

select add2 from trade_base;
select substr(add4,1,3),substr(add2,instr(add2,'省'),instr(add2,'市'))
from trade_base;却成了这个样子?北京市开头,截取0-3正常,广东省深圳市3-6却为“省深圳市罗湖”我郁闷了
求指点?谢谢
是把各个市提取出来。我晕看来我犯了一个错。解决了
select substr(add4,1,3) coding ,
substr(add2,case when instr(add2,'省') > 0 then instr(add2,'省')+1 else 0 end,3) as area
from trade_base;




德玛西亚99
浏览 2568回答 2
2回答

守着一只汪

不是没规律是上海和北京那个没有省,还有instr选出来的是省那位的长度地址,得+1才是后一位1select  substr(add2,instr(add2,'省')+1,instr(add2,'市')) from trade_base

郎朗坤

 Oracle的substr函数是用于截取字符串的。  格式如下:  substr(字符串,截取开始位置,截取长度) //返回截取的字  几种常见用法:  substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串  substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符  substr('Hello World',2,4) //返回结果为 'ello'  substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符  oracle代码测试:1select substr('Hello World',-3,3) value from dual;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Oracle