oracle 拼接多个列_ORACLE实现类似mysql的find_in_set

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

5f5da5f39f52046d1991c664d2cac5ac.png

上面的方法实现了将逗号分隔的文字变成了多行的记录,再经过改进后可以作为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)

8b1879231407235365f5b61234d5a1b7.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

放大缩小保证div对齐_NFS Write IO 不对齐深度分析

导读&#xff1a;NFSClient 对大多数的应用写入没有做对齐优化&#xff0c;本文根据 IO 不对齐的原因给出了若干实践建议。作者 | 裴晓辉背景最近团队小伙伴弗曼统计了线上用户数据写入对齐情况&#xff0c;通过统计数据发现了一个有趣的现象: 用户写入请求中近 70% 的数据块 4…

MySQL+for+Mac下载_MySQL For mac

MySQL For Mac官方版是一款可以在苹果电脑MAC OS平台上使用的多线程的、结构化查询语言(SQL)数据库服务器&#xff0c;SQL在世界上是最流行的数据库语言,MySQL For Mac最新版的执行性能非常高&#xff0c;运行速度非常快&#xff0c;并且MySQL For Mac非常容易使用。MySQL For …

石头剪刀布程序流程图_石头剪刀布!我要与电脑决战到天明!(14天)

1、学习心得原来一直以为&#xff0c;学了这个600集视频&#xff0c;应该就能自己做点啥了&#xff0c;比如我的最终目的&#xff1a;爬学区房。但是我今天学的时候&#xff0c;隐隐觉得&#xff0c;好像不大现实。毕竟&#xff0c;这都到了200多集&#xff0c;我依然还是个纯粹…

python做地图导航_「Python」利用高德地图做你想做之事

玩grasshopper基本上都知道OpenStreetMap 这个地图网站&#xff0c;毕竟有一个好用的地图插件&#xff0c;可以在Rhino中绘制出所需&#xff0c;但是一个不好的地方就在于国内的数据量太少&#xff0c;无法满足我们的需求。此次所讲的高德地图基本上可以解决我们的痛点&#xf…

elementui分页组件按钮样式修改_Vue使用Elementui修改默认最快方法!

相信大家都需要过&#xff0c;在Vue中使用Elementui的时候&#xff0c;遇到最多也最蛋疼的问题就是修改默认样式&#xff0c;接下来直奔主题&#xff1b;// template :text-inside"true" :stroke- :percentage"70" >-progress>默认样式方法…

mybatis字符串转成数字_计算机储存数字和字符的方法你了解多少?

前语&#xff1a;不要为了读文章而读文章&#xff0c;一定要带着问题来读文章&#xff0c;勤思考。本文链接&#xff1a; http://1t.click/J7E前言最近在学习中涉及到计算机储存、传输数字和字符等操作&#xff0c;由于对字节、2进制、10进制、16进制、ASCII码的概念以及它们之…

usb连接不上 艾德克斯电源_艾德克斯HT3150联机和IT6720校准联机记

大概2年前&#xff0c;坛里入了一台设置电压比输出电压高几伏的IT6720电源&#xff0c;到手发现&#xff0c;里面被修得惨不忍睹。到手的时候是110V的&#xff0c;没想到这种型号&#xff0c;跳线要改焊控制变压器和高压部分两个跳线&#xff0c;只修改了控制变压器跳线&#x…

使用java向ftp上传多张图片_ftp免费空间,利用ftp工具定时连接ftp免费空间教程及java配置...

IIS7服务器管理工具这款ftp客户端软件&#xff0c;可以批量管理ftp站点&#xff0c;还可以实现ftp定时上传、定时下载&#xff0c;定时备份、自动更新等功能。关于ftp客户端功能&#xff0c;它主要实现以下四点功能&#xff1a;1、ftp 批量操作2、ftp 定时同步&#xff08;上传…

损失函数的意义和作用_损失函数的可视化:浅论模型的参数空间与正则

点击蓝字关注我们作者丨土豆知乎来源丨https://zhuanlan.zhihu.com/p/158857128本文已获授权&#xff0c;不得二次转载前言在深度学习中&#xff0c;我们总是不可避免会碰到各种各样的损失函数。通常来说&#xff0c;损失函数都是高维的函数&#xff0c;难以可视化为人类可以分…

postgres 把一个表的值转成另一个表的字段名_用LUT来做一个可动态配置的卷积核...

引言由于卷积核数据在计算过程中保持不变&#xff0c;更新较慢。这样就可以利用LUT来存储权重并同时进行乘法运算。LUT乘法器的实现很早就已经研究过&#xff0c;本论文正是在此基础上&#xff0c;提出了用于实现可配置的卷积实现方法。基于LUT的乘法器不会受到FPGA中DSP资源的…

mysql储存过程把集合并_MySQL 多日志表结果集合拼接存储过程

通常MySQL单天的日志 只记录当天的日志信息,如果需要查看一月内的日志信息需要对每天的日志表结果集合进行拼接&#xff0c;通常用到 union通常MySQL单天的日志 只记录当天的日志信息,如果需要查看一月内的日志信息需要对每天的日志表结果集合进行拼接&#xff0c;通常用到 uni…

对于一个指针可以多次使用delete_【C++札记】new和delete

malloc,free和new,delete区别&#xff1a;a.malloc,free是C/C的标准库函数。new,delete是c的操作符。b.malloc申请的是内存&#xff0c;严格意义不是“对象”&#xff0c;new申请的可以理解为“对象”&#xff0c;new 时会调用构造函数&#xff0c;返回指向该对象的指针。c.对于…

java循环队列_Java 循环队列的实现

队列概念队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)&#xff0c;没有元素的队列称为“空队列”。队列具有先进先出(FIFO)的特性。普通顺序队列存在的问题在普通顺序队列中,入队的操作就是先将尾指针re…

java new 多线程_Java多线程实现(四种方法)

1.继承Thread类&#xff0c;重写run方法(其实Thread类本身也实现了Runnable接口)2.实现Runnable接口&#xff0c;重写run方法3.实现Callable接口&#xff0c;重写call方法(有返回值)4.使用线程池(有返回值)1.继承Thread类&#xff0c;重写run方法每次创建一个新的线程&#xff…

oracle删除唯一索引sql语句_高级SQL之在选择语句中使用更新和删除

点击蓝字关注我吧【本文详细介绍了数据库中在选择语句中使用更新和删除的方法&#xff0c;欢迎读者朋友们阅读、转发和收藏&#xff01;】1 基本概念1.1 SQL UPDATE 语句Update 语句Update 语句用于修改表中的数据。语法&#xff1a;UPDATE 表名称 SET 列名称 新值 WHERE 列名…

java 多层异常_Java多层嵌套异常处理的基本流程

异常是程序中的一些错误&#xff0c;但并不是所有的错误都是异常&#xff0c;错误有时候是可以避免的。异常的对象有两个来源&#xff0c;一是Java运行时环境自动抛出系统生成的异常&#xff0c;而不管你是否愿意捕获和处理&#xff0c;它总要被抛出&#xff01;比如除数为0的异…

java 获取子线程_Java 主线程获取子线程返回结果

1.自定义package com.jgyang.com;public class MySyncThreadTest {public static void main(String[] args) throws Exception {CustomRunnable cRunnacle new CustomRunnable();Thread thread new Thread(cRunnacle,"子线程");thread.start(); //子线程执行System…

串口工具securecrt_SecureCRT配置华为交换机部分命令

点上方蓝字“工控先生”免费快速关注本文由“135编辑由于工作需要&#xff0c;昨天临时需要从华为的光电交换机上面的console口查看一些端口的状态等&#xff0c;现整理如下&#xff0c;有需要的可以参考一下&#xff1a;硬件准备串口线&#xff0c;华为交换机连接将RJ45连接到…

java 跳转虚拟目录_java tomcat虚拟目录的深入了解

我们知道&#xff0c;Web网站中的内容(包括网页&#xff0c;图片&#xff0c;音频文件等)一般都存放在App的目录下。但随着网站内容的不断丰富&#xff0c;用户需要把不同层次的内容组织成网站的子目录。我们通常的做法是在网站主目录下新建子目录&#xff0c;并把相关的内容放…

redis工具类_SpringBoot 操作 Redis 数据

SpringBoot 操作 Redis 数据简介 Redis 是一个开源的NoSQL数据库&#xff0c;基于内存的键值存储&#xff0c;速度快。Redis 支持数据结构&#xff0c;如字符串&#xff0c;散列&#xff0c;列表&#xff0c;集和带范围查询的有序集。5种主要数据类型&#xff1a;字符串类型 …