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

大饼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个‘/ ’这种情况怎么处理。因为最后一个‘某区’,是根据字段长度减去最后一个‘/’的位置得到的。不知道大神们有没有更好的方法
...全文
574 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
根据原作 https://pan.quark.cn/s/a4b39357ea24 的源码改编 在Java编程中,JSON编码(基于JavaScript的一种轻量级数据交换格式)被广泛用于前后端数据交互。这种格式具有易于人机读写的优点,特别适合机器解析和生成操作。当处理包含JSON的数据时,我们通常会使用到`json-lib`库,该库提供了核心功能的实现。其中,`JSONObject`类用于表示一个对映射关系的对象结构,其基本组成单位是有序的键对序列。每个键对由两个字符串字段构成,它们之间通过冒号分隔并用逗号将多个分隔开。整个对象数据则被包裹在大括号内。例如:`{ "属性": "" }`。而`JSONArray`类则用于处理JSON数组,它是一个有序的、可变长度的数据容器,其元素可以是其他类型的所有JSON结构(如对象、数组等)。这些元素通过中括号包围,并用逗号分隔开来。例如:`[ { "属性1": "1" }, { "属性2": "2" } ]`。 在具体的实现细节方面,为了从一个复杂的JSON字符串解析出所需数据,通常需要将原始字符串转换为合适的JSON对象或数组类型,并通过链式调用来逐步获取目标数据。具体步骤如下:首先,使用`JSONArray.fromObject(String)`方法将原始的JSON字符串转义成该库支持的对象格式;其次,根据需求从数组中取出特定的目标JSON对象;最后,对目标对象进行解密操作以获取所需的数据。 这种基于键对映射关系的数据结构在Java编程中具有强大的灵活性和可扩展性。通过合理设计键名和数据类型,可以实现高效的数据存储、查询和更新操作。同时,在处理复杂的嵌套JSON结构时,`JSONObject`类提供...

17,138

社区成员

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

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