Oracle之如何将分隔数据转换为IN列表

简介: Oracle之如何将分隔数据转换为IN列表

今日份知识学习

今天我们来学习如何将分隔数据转换成IN函数可以使用的列表数据,一个很典型的问题,但是要写好这个SQL可是不容易。

具体讲解

现在我们先来假设有这么一个字符串:‘张三、李四、王五’,想要从user_table表中取出相应匹配的值来。

这个时候我们应该使用IN函数,比如下面的SQL:

select * from user_table where name in (.....)

但是我们并没有in函数可以用的数据,只有一个字符串数据。那我们就要做一下工作了。

1.循环取出值

之前的文章中我们说到过,循环取值一般都是用level connect by关键字。

那么这次我们也是这么使用,看如下SQL:

select level from dual connect by level <= (length(分隔符的数量) + 1)

2.分隔符的数量如何计算

这个时候我们就可以使用regexp_count()函数了,完善一下SQL:

select level from dual connect by level <= (length(regexp_count('张三、李四、王五', '、')) + 1)

3.输出指定位置的名称

继续完善SQL:

select regexp_substr('张三、李四、王五', '\[^、]+', 1, level) from dual connect by level <= (length(regexp_count('张三、李四、王五', '、')) + 1)

通过以上SQL就可以得出IN函数可用的列表数据了,随后我们再将这个SQL拼接到主SQL中。

如下SQL:

select * from user_table where name in (select regexp_substr('张三、李四、王五', '\[^、]+', 1, level) from dual connect by level <= (length(regexp_count('张三、李四、王五', '、')) + 1))

经上SQL,就可以得到应有的结果了。

总结

今天我们初步学了如何将分隔数据转换成IN列表的方法,但是并没有给分隔数据进行去重,下篇文章我们一起来看看如何给查出来的数据去重吧。

最近开始来学习Oracle数据库的一些知识,其中包含一些函数的使用,或者是特性的介绍讲解等,将会在系列文章内说到。

喜欢的可以关注一下专栏。

目录
相关文章
|
6月前
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
95 0
|
6月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
3月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
3月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
4月前
|
Oracle 关系型数据库 数据库
oracle数据创建同义词
oracle数据创建同义词
67 0
|
6月前
|
SQL 监控 Oracle
Oracle数据误删不用怕,跟我来学日志挖掘
Oracle数据误删不用怕,跟我来学日志挖掘
120 0
|
6月前
|
SQL Oracle 关系型数据库
Oracle误删数据怎么恢复?
Oracle误删数据怎么恢复?
71 0
|
6月前
|
SQL Oracle Java
实时计算 Flink版产品使用问题之采集Oracle数据时,为什么无法采集到其他TABLESPACE的表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
分布式计算 Oracle 关系型数据库
实时计算 Flink版产品使用问题之获取Oracle的数据时无法获取clob类型的数据,该怎么办
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多