在程序开发的过程中有很多的场景都会使用一个字段保存多个信息并且使用符号分隔,比如写一篇文章,保存了所有赞赏人员的ID。

在一般的应用中除了保存外,还需要对此字段进行一些搜索,如站点中搜索所有我赞赏的文章。下面我们就来讲一讲在oracle数据库中如果进行搜索。

对于逗号分隔开的字段进行搜索,最方便的是mysql数据库了直接使用find_in_set 就搞定了,

而作者使用的是oracle 的数据库,查了文档竟然没有类似的api。

最近笔者遇到一个需求。在数据库中有下方表格所示类型的一个列,每个值都是由ID拼接的字符串,用户希望能针对这个列做到数据检索,要求数据值只要包含传入值,即视为满足检索条件。

不过在网络上搜索到一个算法是将逗号分隔的文字分成多行。如下

select regexp_substr('a,b,c', '[^,]+', 1, rownum)

from dual

connect by rownum <=

length('a,b,c') - length(replace('a,b,c', ',', '')) + 1


上面的方法实现了将逗号分隔的文字变成了多行的记录,再经过改进后可以作为find_in_set替代

相关sql如下

select *

from (select 'a,b,c,ab' a from dual union select 'db,ab,c' a from dual) t

where 'c' in

(select regexp_substr(t.a, '[^,]+', 1, rownum)

from dual

connect by rownum <= length(t.a) - length(replace(t.a, ',', '')) + 1)


oracle 拼接多个列_ORACLE实现类似mysql的find_in_set相关推荐

  1. oracle 同义词_Oracle迁移到MySQL,必须要搞明白这几个问题

    这是学习笔记的第 1857篇文章 从Oracle迁移到MySQL需要考虑的事情其实远比我们要理清数据类型转换这些技术细节要多,也更重要. 有两个问题需要前置考虑: 为什么要从Oracle迁移出去? 为 ...

  2. code函数oracle列子,Oracle 8 的函数介绍_oracle

    这些函数允许你存取 oracle8 和 Oracle7 数据库. 他使用 Oracle8 的点用接口 (OCI8). 使用这个扩展模块,你需要 Oracle8 客户端库文件. 这个扩展模块比标准 Or ...

  3. oracle对查询结果求和_oracle基础知识分享

    原文链接:https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0 以下是本人整理的ORACLE学习的一些基本的语法知识,如有不对的地方,望大家批评指 ...

  4. mysql中教如何拼接字段(列)值、加入运算、设置别名(非常实用)

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究)   在mysql中 ...

  5. Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果

    Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果 转载于:https://www.cnblogs.com/K ...

  6. java怎么写合并列sql_SQL STUFF函数 拼接字符串 多列 合并成一列 转

    关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...

  7. Oracle 实现行转列的几种方法

    Oracle 实现行转列的几种方法 表数据 1 使用 decode 与聚合函数实现 2 使用 case when 与聚合函数实现 3 使用 pivot 函数 表数据 with students as( ...

  8. js锁定表头和列,实现类似execl锁定效果

    js锁定表头和列,实现类似execl锁定效果,项目实现后效果如下: js代码 <script type="text/javascript"> function FixT ...

  9. Oracle 自动生成标识列, 比如订单编号,学生ID

    Oracle 自动生成标识列, 比如订单编号,学生ID

最新文章

  1. 可视化生信分析利器 Galaxy 之 Docker 开发
  2. Objective-C学习—UIWebView的使用
  3. win10 64 安装VSS2005报错,解决方法。
  4. php ADODB使用方法
  5. 生日祝福(HTML+CSS+JavaScript+jQuery)
  6. 威联通NAS通过宝塔面板实现域名统一端口访问
  7. linux系统做的小游戏,2007最新 100个Linux系统上的小游戏汇集
  8. js object 常用方法总结
  9. Network 第六篇 - 三层交换机配置路由功能
  10. php监考,科学网—监考与被监考 - 张珑的博文
  11. Python练手项目:求解史上最难数独问题
  12. Cmake编译时无法打开包括文件: “pthread.h”
  13. 浏览器网页自动刷新脚本
  14. 2021-2027全球与中国B2C视频直播平台市场现状及未来发展趋势
  15. 鸿蒙安卓字体,鸿蒙中如何自定义字体文件
  16. 转换优化 onnx模型
  17. 最新VIN(车辆识别码)解析
  18. 解决插入word文档中的图片变得不清晰问题
  19. 在制作蓝牙小车app中遇到的坑
  20. 上海交大开源GPGPU青花瓷仿真环境搭建

热门文章

  1. (转)关于X64位系统IIS7下支持32位asp.net程序
  2. 解决导出word迅雷读取地址和下载出错
  3. 在VMWare Workstation 8.0.1中安装苹果MAC OS X Lion Part 2
  4. vant toast loading 倒计时_日期倒计时软件哪个好 苹果日期倒计时软件推荐
  5. oracle修改字符集
  6. Hive的使用之hwi
  7. 如何请教问题且以后都会回答你的方法
  8. SecureCRT配置前--Linux网卡设置
  9. 插件translator_Zotero Jasminum 插件的更新记录
  10. cython加密代码python_利用Cython对python代码进行加密