加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle字段like多个条件

发布时间:2021-01-25 15:18:00 所属栏目:站长百科 来源:网络整理
导读:写oracle sql时偶然辰会有 and (字段 like ‘匹配串1’or 字段 like ‘匹配串2’or ...)这样的环境呈现,下面提供一个简捷点的办理方案: and REGEXP_LIKE(字段名, ‘ (匹配串1|匹配串2|...) ‘ ) // 全恍惚匹配 and REGEXP_LIKE(字段名, ‘ ^(匹配串1|匹

写oracle sql时偶然辰会有 and (字段 like ‘匹配串1’or 字段 like ‘匹配串2’or ...)这样的环境呈现,下面提供一个简捷点的办理方案:

and REGEXP_LIKE(字段名,‘(匹配串1|匹配串2|...)‘) //全恍惚匹配 and REGEXP_LIKE(字段名,‘^(匹配串1|匹配串2|...)‘) ";//右恍惚匹配 and REGEXP_LIKE(字段名,‘(匹配串1|匹配串2|...)$‘) ";//左恍惚匹配

案例:

某天客户有一个需求,给定一批的手机号码可能电话号码,查询出相干的通话记录,以及相干的一些信息。因为客户给的被叫号码很不类型,查询的时辰较量贫困。

说明进程:

我新建了一个表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,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,file_name
from t_phonebill_201702 a,security_phonebill_callee_num c where a.org_callee_num like ‘%||c.org_callee_num||%‘

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读