Oracle如何实现like多个值的查询
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,问题背景描述:某天客户有一个需求,给定一批的手机号码或者电话号码,查询出相关的通话记录,以及相关的一些信息。客户给定的被叫号码如图所示:查询出来的结果如下图所示(本批次的结果不是上图导入的结果查询的,
千家信息网最后更新 2025年11月08日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_namefrom t_phonebill_201702 awhere a.org_callee_num like '800100186%'
但是这样的号码有好多个,有时候有一百多个,以上的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_namefrom 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_namefrom t_phonebill_201702 a,security_phonebill_callee_num cwhere a.org_callee_num like '%||c.org_callee_num||%'
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
查询
号码
结果
多个
客户
就是
数据
游标
信息
内容
效率
需求
学习
不错
清楚
上图
不大
价值
图片
小时
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发后产权归
k3怎么无法连接服务器
网络文明网络安全手抄报内容
郑州上位机软件软件开发
steam在中国的服务器
网络安全手抄报的手机内容
网络安全有什么新名词
军队网络安全主题黑板报
信息网络安全 刊物
网络安全性指标主要有
pta创建数据库题库答案
我的世界1.18的服务器
驻马店网络安全工程师培训课程
roarctf网络安全
公安厅网络安全处好不好
中国太保金融互联网科技
免费黑客网络技术
垫江县软件开发专业
服务器维护管理
已经关闭所有的数据库连接
无锡应用软件开发创新服务
网络安全馆靠谱吗
数据库实例文件
数据库插入表无效数字
木星服务器
嘉定租房网络安全
中芯国际华为服务器
软件开发实践的思想基础
地产软件开发价格
维普数据库检查字段