求教大神脚本怎么写,用什么公式

whwuchang2155 2018-01-05 03:55:43
求教各位大神,现在要取部分信息,信息内容格式如下, >安徽省>合肥市>肥西县>实验小学>一一班,信息中:安徽省是第一级,合肥市是第二级,肥西县是第三级,实验小学是第四级,一一班是第五级,每级之间用符号 > 隔开。现在我想分别取第三级和第四级 内容,如何写脚本? 注 :每级长度不一样。比如第二级可能有的输入 合肥市三个字,也有的输入合肥两个字,不带市。
...全文
569 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcs_zzh 2018-01-15
  • 打赏
  • 举报
回复
chengccy给出的查询是正确的,ORACLE的正则表达式可以很容易的解决这个问题。 REGEXP_SUBSTR有四个参数,第1个参数就是要解析的字符串,第2个参数是正则表达式,这里[^>]+表示不包含字符“>”连续的字符串,第三个参数是从第几字符开始,这里都是1,就是整个字符串,第4个参数是表示第几个符合条件的正则表达式。 执行下面的查询可以看到效果。 SELECT regexp_substr('>安徽省>合肥市>肥西县>实验小学>一一班', '[^>]+', 1, 1) FROM dual; SELECT regexp_substr('>安徽省>合肥市>肥西县>实验小学>一一班', '[^>]+', 1, 2) FROM dual; SELECT regexp_substr('>安徽省>合肥市>肥西县>实验小学>一一班', '[^>]+', 1, 3) FROM dual; SELECT regexp_substr('>安徽省>合肥市>肥西县>实验小学>一一班', '[^>]+', 1, 4) FROM dual; SELECT regexp_substr('>安徽省>合肥市>肥西县>实验小学>一一班', '[^>]+', 1, 5) FROM dual;
qq_30421439 2018-01-08
  • 打赏
  • 举报
回复
select substr(tab,instr(tab,'>',1,3)+1,instr(tab,'>',1,4)-1-instr(tab,'>',1,3)) 第三级,substr(tab,instr(tab,'>',1,4)+1,instr(tab,'>',1,5)-1-instr(tab,'>',1,4)) 第四级 
from (select '>安徽省>合肥市>肥西县>实验小学>一一班' tab from dual);
chengccy 2018-01-05
  • 打赏
  • 举报
回复
select regexp_substr(s,'[^>]+',1,3),regexp_substr(s,'[^>]+',1,4) from (select '>安徽省>合肥市>肥西县>实验小学>一一班' s from dual)

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧