oracle字段like多个条件
写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,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字段like多个条件的更多相关文章
- Oracle 字段监控 ( column monitor)
Oracle 字段监控 ( column monitor) */--> Oracle 字段监控 ( column monitor) Table of Contents 1. 开启与关闭 2. 字 ...
- oracle字段类型
oracle 字段类型CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 byt ...
- oracle通过query导出指定条件的数据
通过下面的方式oracle可以导出指定了条件的数据: exp mixcoaldb/mixcoaldb@server tables=(shengcssjk) query=\"where to_ ...
- ORACLE 字段AES算法加密、解密
ORACLE 字段AES算法加密.解密(解决中文乱码问题)2014年02月12日 17:13:37 华智互联 阅读数:97971.加解密函数入口 CREATE OR REPLACE FUNCTION ...
- Oracle字段类型及存储(一)
Oracle中2000个byte,并不是2000个字符的意思,1个字符在Oracle中可能是1个byte到4个byte不等,需看数据库字符集的设置了. 对GBK字符集而言,ASCII码中128个字符使 ...
- Oracle 字段拆分替换在合并成一条
看了网上很多Oracle字段拆分的实例,但是都未能完全满足要求,或许是我水平不够未能很好的理解,如果有大神懂得并且愿意告知我的,可以私信我,在这里真诚的感谢! 1. 首先建立表并插入测试数据 drop ...
- 修改有数据oracle字段类型 从number转为varchar
--修改有数据oracle字段类型 从number转为varchar--例:修改ta_sp_org_invoice表中RESCUE_PHONE字段类型,从number转为varchar --step1 ...
- sqlserver 字段内容做in条件 列变成行显示
sqlserver中 字段内容做in条件用到方法:CHARINDEX(value,situation) 列变行显示用到:stuff 详情自行查找. 例子: stuff((select ','+name ...
- Oracle 字段类型
Oracle 字段类型 http://www.cnblogs.com/lihan/archive/2010/01/06/1640547.html 字段类型 描述 字段长度及其缺省值 CHAR (siz ...
随机推荐
- 实体类与数据库字段不匹配问题,java.sql.SQLSyntaxErrorException: Unknown column 'xxx' in 'field list'
控制台报错 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'user_nam ...
- linux基本操作和常用命令(2)
linux基本操作和常用命令(2) 第二部分主要是涉及到用户和组的概念,以及一些操作.涉及到用户和组的共三个文件,分别存放在/etc/shadow(密码信息) /etc/group(组信息) /etc ...
- MSSQL数据库备份还原常用SQL语句及注意
.备份数据库 backup database db_name to disk='d:\db_name.bak' with format --通过使用with format可以做到覆盖任何现有的备份和创 ...
- C#异步编程研究学习(一)
可以使用Func<T>或者Action<T>简单实现如: Func<string, string,string,string, int> func = new Fu ...
- 人人商城返回Json格式的数据
人人商城返回Json格式的数据 1.找到该插件对应的 core/mobile 路径 2.新建一个 api.php 文件 <?php header('Content-Type:applicatio ...
- UVA - 11107 Life Forms (广义后缀自动机+后缀树/后缀数组+尺取)
题意:给你n个字符串,求出在超过一半的字符串中出现的所有子串中最长的子串,按字典序输出. 这道题算是我的一个黑历史了吧,以前我的做法是对这n个字符串建广义后缀自动机,然后在自动机上dfs,交上去AC了 ...
- GitHub : Hello World
这个写的太好啦,让我也没啥可以写的啦:http://www.open-open.com/lib/view/open1454507333214.html
- 安全框架Shiro和SpringSecurity的比较
来自:https://www.cnblogs.com/zoli/p/11236799.html 两个基本的概念 安全实体:系统需要保护的具体对象数据 权限:系统相关的功能操作,例如基本的CRUD Sh ...
- String中的intern方法
上一篇你真的会用String吗(3)-关于字符串拼接中我们提到了String.intern()方法,本篇我们就来详细的看下这个方法是干嘛的.首先来看下jdk8中这个方法的注释: When the in ...
- c#图像处理的简单算法
原文链接:https://blog.csdn.net/wchstrife/article/details/78984735 使用C#进行图像处理前言之前一直认为图像处理是一件很高大上的事情,在一门选修 ...