为了账号安全,请及时绑定邮箱和手机立即绑定

oracle substr()截取汉字?

oracle substr()截取汉字?

德玛西亚99 2019-02-03 09:05:07
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才是后一位

1select  substr(add2,instr(add2,'省')+1,instr(add2,'市')) from trade_base


查看完整回答
反对 回复 2019-03-14
?
郎朗坤

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代码测试:

1select substr('Hello World',-3,3) value from dual;



查看完整回答
反对 回复 2019-03-14
  • 2 回答
  • 0 关注
  • 2474 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信