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 areafrom trade_base;
2 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
不是没规律
是上海和北京那个没有省,还有instr选出来的是省那位的长度地址,得+1才是后一位
1 | select substr(add2,instr(add2, '省' )+1,instr(add2, '市' )) from trade_base |
郎朗坤
TA贡献1921条经验 获得超9个赞
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代码测试:
1 | select substr( 'Hello World' ,-3,3) value from dual; |
- 2 回答
- 0 关注
- 2567 浏览
添加回答
举报
0/150
提交
取消