一个字段保存多个值,并用/分隔,怎么分别取出

大饼Ora 2016-05-16 01:31:51
例如:t 表info字段
        info
/某省/某市/某区


将省、市、区分别放在三个字段。


我有一种笨方法:
--1,分别先找出第一个'/'和第二个'/' 以及第三个‘/’的位置,2,根据位置取值
with t as
(select '/某省/某市/某区' info from dual)
select instr(t.info, '/', 1, 1) a,
instr(t.info, '/', 1, 2) b,
instr(t.info, '/', 1, 3) c,
substr(t.info,
instr(t.info, '/', 1, 1) + 1,
instr(t.info, '/', 1, 2) - instr(t.info, '/', 1, 1) - 1) provice,

substr(t.info,
instr(t.info, '/', 1, 2) + 1,
instr(t.info, '/', 1, 3) - instr(t.info, '/', 1, 2) - 1) city,

substr(t.info,
instr(t.info, '/', 1, 3) + 1,
length(t.info) - instr(t.info, '/', 1, 3)) suncity
from t;


A B C PROVICE CITY SUNCITY
1 4 7 某省 某市 某区



这只是比较简单的情况。现有如下疑问:
如果是多A,到小区,也就是可能有3到5个‘/ ’这种情况怎么处理。因为最后一个‘某区’,是根据字段长度减去最后一个‘/’的位置得到的。不知道大神们有没有更好的方法
...全文
539 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ORAClE SE 2016-05-16
  • 打赏
  • 举报
回复
嘿嘿嘿,正着表达式
大饼Ora 2016-05-16
  • 打赏
  • 举报
回复
引用 8 楼 wmxcn2000 的回复:
[quote=引用 2 楼 q12344566789 的回复:] @卖水果的net
来了,来了,参考 6# ,并结合 regexp_count 使用;[/quote] got it
卖水果的net 2016-05-16
  • 打赏
  • 举报
回复
引用 2 楼 q12344566789 的回复:
@卖水果的net
来了,来了,参考 6# ,并结合 regexp_count 使用;
大饼Ora 2016-05-16
  • 打赏
  • 举报
回复
引用 6 楼 z123zjf 的回复:
regexp_substr(str,'[^/]+',1,n)
想点"对我有用" 点成 “丢个板砖” 了 正则表达式,,,谢了
z123zjf 2016-05-16
  • 打赏
  • 举报
回复
regexp_substr(str,'[^/]+',1,n)
大饼Ora 2016-05-16
  • 打赏
  • 举报
回复
引用 4 楼 steve_shen 的回复:
为什么数据库不设计多几个字段,而都要放一起呢?搞的那么复杂
那样的话,也就没有这个问题了
steve_shen 2016-05-16
  • 打赏
  • 举报
回复
为什么数据库不设计多几个字段,而都要放一起呢?搞的那么复杂
大饼Ora 2016-05-16
  • 打赏
  • 举报
回复
@小灰狼W
大饼Ora 2016-05-16
  • 打赏
  • 举报
回复
@卖水果的net
大饼Ora 2016-05-16
  • 打赏
  • 举报
回复
@wmxcn2000

17,086

社区成员

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

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