Oracle如何实现like多个值的查询

 更新时间:2018年08月02日 08:17:35   作者:钟子敬07  
这篇文章主要给大家介绍了关于Oracle如何实现like多个值的查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题背景描述:

某天客户有一个需求,给定一批的手机号码或者电话号码,查询出相关的通话记录,以及相关的一些信息。

客户给定的被叫号码如图所示:

查询出来的结果如下图所示(本批次的结果不是上图导入的结果查询的,为了格式说明,因此导入两张结果不相关的图片):

由于客户给的被叫号码很不规范,查询的时候比较麻烦。

分析过程:

我新建了一个表security_phonebill_callee_num,用以存放导入的被叫号码信息

所有的通话数据保存在t_phonebill_201702中,想要查询必须要实现like,就是以下sql的实现效果

select org_caller_num,org_callee_num,call_seconds,start_time,switch_id,
in_trunk,out_trunk,settle_carrier,file_name
from t_phonebill_201702 a
where a.org_callee_num like '%13800100186%'

但是这样的号码有好多个,有时候有一百多个,以上的sql只能查询一个号码的通话记录

一开始我想用游标实现,写一个游标,把被叫号码放入游标中,然后写一个循环,每次都依次查询一下,

但后来发现t_phonebill_201702数据量太大,like一次就要花费时间20分钟,100个就是2000分钟(30个小时),耗时量太大,效率太低。

后来查阅资料,多次尝试下写下这个sql,总算是实现了查询,实验论证效率也还不错。

select org_caller_num,a.org_callee_num,call_seconds,start_time,switch_id,
in_trunk,out_trunk,settle_carrier,file_name
from t_phonebill_201702 a 
where exists
(select 1 from security_phonebill_callee_num c where a.org_callee_num 
 like '%||c.org_callee_num||%') ;

如果t_phonebill_201702表的数据量不大,可以考虑使用简版,简版更易于了解,也能更清楚明白like多个值是如何实现的,但使用exists总是一个好习惯。如果你有类似的需求,希望可以帮到你。

select org_caller_num,a.org_callee_num,call_seconds,start_time,switch_id,
in_trunk,out_trunk,settle_carrier,file_name
from t_phonebill_201702 a,security_phonebill_callee_num c
where a.org_callee_num like '%||c.org_callee_num||%'

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Oracle中is和as的区别和使用

    Oracle中is和as的区别和使用

    在Oracle数据库中,AS和IS是两个常用的关键字,它们分别表示“命名别名”和“判断是否相同”,AS和IS的主要区别在于它们的功能,AS是一种授权服务,它负责授予和管理用户访问数据库特定对象和操作的权限,IS则是一种身份验证服务,它负责管理用户的身份和访问权限
    2024-01-01
  • oracle 数据泵导入导出介绍

    oracle 数据泵导入导出介绍

    本文将介绍oracle数据泵导导出步骤详细介绍,需要的朋友可以参考下
    2012-12-12
  • Oracle查看表操作历史记录并恢复数据的方法

    Oracle查看表操作历史记录并恢复数据的方法

    Oracle是一种广泛应用于企业级数据库系统的软件,但在操作过程中可能会发生误删除数据的情况,这时就需要进行数据恢复操作,这篇文章主要给大家介绍了关于Oracle查看表操作历史记录并恢复数据的相关资料,需要的朋友可以参考下
    2023-08-08
  • oracle 12c因误删pdb数据文件导致整个数据库打不开的解决方法

    oracle 12c因误删pdb数据文件导致整个数据库打不开的解决方法

    这篇文章主要给大家介绍了关于oracle 12c因误删pdb数据文件导致整个数据库打不开问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧。
    2017-10-10
  • Oracle入侵常用操作命令整理

    Oracle入侵常用操作命令整理

    入侵命令收集整理,方便大家学习怎么防范
    2008-05-05
  • Oracle数据库中的优化方法

    Oracle数据库中的优化方法

    这篇文章主要给大家介绍了Oracle数据库中的优化方法,Oracle数据库是当前应用最广泛的大型数据库之一,其系统结构复杂,性能受多方面因素影响,其中查询操作是影响其性能的关键因素,需要的朋友可以参考下
    2023-07-07
  • Oracle用户密码过期和用户被锁的解决方法

    Oracle用户密码过期和用户被锁的解决方法

    这篇文章主要介绍了Oracle用户密码过期和用户被锁的解决方法,需要的朋友可以参考下
    2017-04-04
  • Oracle删除archivelog文件的正确方法

    Oracle删除archivelog文件的正确方法

    Oracle在开启了归档模式后,会在指定的archive目录下产生很多的archivelog文件,而且默认是不会定期清除的,时间长久了,该文件夹会占用很大的空间。那么如何定期正确删除archivelog文件呢?今天小编给大家介绍下
    2017-02-02
  • windows下oracle 11g安装图文详解

    windows下oracle 11g安装图文详解

    在本教程中,您将学习如何在 Windows 上安装 Oracle 数据库 11g,需要的朋友可以参考下
    2023-11-11
  • 详解Oracle在out参数中访问光标

    详解Oracle在out参数中访问光标

    这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08

最新评论