SQL篇·Oracle字段根据逗号等分割
一、业务场景介绍
有一个表字段存储了另一个表的关联字段,以“|”符号分割,如下所示:
连接查询中当然可以使用like来关联,但是效率很差。高效的做法应该是将该字段按照“|”字符分割,然后关联查询。
二、oracle分割查询方法
SELECTregexp_substr( 'a|b|c', '[^|]+', 1, ROWNUM ) result
FROMdual CONNECT BY ROWNUM <= length(regexp_replace( 'a|b|c', '[^|]', NULL )) + 1;
查询结果:
这个是原始的写法,“|”可以是别的字符,可以拿来修改。
三、应用
应用在我的场景中就是:
-- 分割pro_ids
SELECTregexp_substr( t.PRO_IDS, '[^|]+', 1, ROWNUM ) pro_ids
FROM( SELECT * FROM CMS_ARTICLE_PREVIEW WHERE id = '3918' ) t
CONNECT BY ROWNUM <= length(regexp_replace( t.PRO_IDS, '[^|]', NULL )) + 1;
查询结果:
查询产品信息可以继续调整sql:
-- 分割pro_ids,并查询出相应产品信息
SELECT * FROM P_PRODUCT_PUBLICINFO WHERE FUNDCODE IN (SELECTregexp_substr( t.PRO_IDS, '[^|]+', 1, ROWNUM ) pro_idsFROM( SELECT * FROM CMS_ARTICLE_PREVIEW WHERE id = '3918' ) t CONNECT BY ROWNUM <= length(regexp_replace( t.PRO_IDS, '[^|]', NULL )) + 1
);
为了信息保密性,此处不截图了。
当然,最终实际场景应用的sql更加复杂,这里只记录样例,需要时可以拿来灵活调整。
SQL篇·Oracle字段根据逗号等分割相关推荐
- SQL篇-修改字段、数据
SQL中的操作通常分为对字段和数据的修改,其中修改分为增.删.改 目录 1.字段的修改 2.数据的修改 1.字段的修改 增加字段 ALTER TABLE <表名> ADD <新字段名 ...
- oracle 字段以逗号结尾的更新 数据库_Oracle数据库某个字段的值为逗号分隔的多个值组成的字符串,以一个多选的下拉框进行查询...
某个字段的值为逗号分隔的多个值组成的字符串,现在需要通过一个可以多选的下拉框进行条件查询. 首先将该下拉框的值在后台获取后封装进一个String数组中,如; params.put("syst ...
- oracle数据库 交集,Oracle两个逗号分割的字符串,获取交集、差集(sql实现过程解析)...
Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...
- oracle表中增加字段 sql语句,ORACLE中通过SQL语句(alter table)来增加、删除、修改字段...
1.添加字段: alter table 表名 add (字段 字段类型) [ default '输入默认值'] [null/not null] ; 2.添加备注: comment on ...
- oracle实现将字段按逗号拼接/按逗号分为多行
oracle实现将字段按逗号拼接/按逗号分行 一.拼接 1.普通拼接 2.进阶:限制拼接个数并去重 3.进阶:拼接除去当前值的其他值 4.函数说明 LISTAGG 二.分行 1.普通分行方法1 2.进 ...
- SQL将查询结果合并到一个字段中并使用,分割,不使用GROUP_CONCAT和FOR XML PATH(‘‘)与存储过程
需求背景: 项目中使用一个字段保存了外键信息,多个外键用[,](逗号)分割,在进行查询的时候需要将这些关联的外键相关字段查询出来. 如我有一个班级表,表中保存了班级班主任信息,班主任可以是多个人,多个 ...
- oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认
转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...
- sql拼接同一字段中的数据_用SQL将Oracle中同一列的多行记录拼接成一个字符
用SQL将Oracle中同一列的多行记录拼接成一个字符串 用SQL将Oracle中同一列的多行记录拼接成一个字符串 [sql] -- 原始数据 -- a 111 -- b 222 -- a ...
- oracle字段长度大于3的值,sql语句查询字段长度大于6
sql语句怎么在一个数据库中查找拥有同一字段名的所有表 1.在Oracle中,这样写就可以解决了select column_name,table_name from user_tab_columns ...
- Oracle SQL篇(三)Oracle ROWNUM 与TOP N分析
首先我们来看一下ROWNUM: 含义解释: 1.rownum是oracle为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推.这是一个伪列,可以用于限制查询返回的总行数. 2 ...
最新文章
- Linux命令学习总结:hexdump
- java 冒泡排序和快速排序 实现
- IPython基础使用_Round2
- 自定义服务器控件ImageButton
- python 第三方库
- 快速了解Bagging算法
- 看完源码记不住,是我记性太差了吗?
- linux 如何自定义安装路径,Linux下安装mysql并自定义数据的存储路径
- 技术分享|Javascript高级教程学习指南
- OpenCV--二值化
- HTTP协议基础及报文抓包分析
- python qq协议_利用webqq协议使用python登录qq发消息 | 学步园
- (Tekla Structures二次开发)将报表模板数据写入文本文件
- 程序员必备的11个辅助开发的软件神器
- 注册百度地图开发者账户创建
- 软件测试员的日常逗逼瞬间
- 图数据库 Dgraph 学习笔记
- DDP及其在pytorch中应用
- 东方通中间件 - TongWeb 初级
- 描述流体中声学物理现象的三个基本方程