Oracle 模糊查询方法
在这个信息量剧增的时代,怎样帮助用户从海量数据中检索到想要的数据。模糊查询是不可缺少的。
那么在Oracle中模糊查询是怎样实现的呢?
一、我们能够在where子句中使用likekeyword来达到Oracle模糊查询的效果;在Where子句中。能够对datetime、char、varchar字段类型的列用Likekeyword配合通配符来实现模糊查询,下面是可使用的通配符:
(1)% :零或者多个字符,使用%有三种情况
字段 like '%keyword%'字段包括"keyword"的记录 字段 like 'keyword%'字段以"keyword"開始的记录字段 like '%keyword'字段以"keyword"结束的记录
样例:
SELECT * FROM [user] WHERE uname LIKE '%三%'
搜索结果:“张三”。“小三”、“三脚猫”,“猫三脚” 有“三” 的记录全找出来。
SELECT * FROM [user] WHERE uname LIKE '%三' (从后開始匹配)
搜索结果:“张三”,“小三”
另外,假设须要找出uname中既有“三”又有“猫”的记录。请使用and条件
SELECT *FROM [user] WHERE uname LIKE '%三%' AND uname LIKE '%猫%'
若使用SELECT * FROM [user] WHERE uname LIKE '%三%猫%',尽管能搜索出“三脚猫”,但不能搜索出“猫三脚”。
(2)_: 单一不论什么字符(下划线)经常使用来限制表达式的字符长度语句:
样例:
SELECT * FROM [user] WHERE uname LIKE '_三_'
搜索结果:“猫三脚”这样uname为三个字符且中间一个是“三”的;
SELECT * FROM [user] WHERE uname LIKE '三__';
搜索结果:“三脚猫”这样uname为三个字符且第一个是“三”的;
(3)[]:在某一范围内的字符,表示括号内所列字符中的一个(相似正則表達式)。指定一个字符、字符串或范围。要求所匹配对象为它们中的任一个。
样例:
SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
搜索结果:“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ]内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
搜索结果:“老1”、“老2”、……、“老9”。
(4)[^]: 不在某范围内的字符。使用方法与[ ]相反。
二、在Oracle中提供了instr(strSource,strTarget)函数,比使用'%keyword%'的模式效率高非常多。
instr函数也有三种情况:
instr(字段,'keyword')>0相当于 字段like '%keyword%'
instr(字段,'keyword')=1相当于 字段like 'keyword%'
instr(字段,'keyword')=0相当于 字段not like
'%keyword%'
样例:
SELECT * FROM [user] WHEREinstr(uname
,'三')>0
使用方法參照上面的Like 就可以
特殊使用方法:
select id, namefrom user where instr('101914, 104703', id) > 0;
它等价于
select id, namefrom user where id = 101914 or id = 104703;
在数据量比較少的时候,能够直接使用上面这两种方法。可是当数据量特别大的时候。我们就应该考虑效率的问题了。
虽说在效率上Instr比likekeyword方法效率要高出不少,但这也不过在一定程度上而言。远不能满足我们的须要。
为什么keyword查询效率这么低呢?这是因为在利用这些keyword查询的时候,数据库系统不是通过索引来查询。而是採用顺序扫描的方式来查询。显然,真是这样的技术特性,造成了Likekeyword查询效率的低下。特别是在复杂查询或者大表查询中。用户能够明显感觉到速度比較慢。
怎么解决效率的难题呢?答案也正是索引。
合理的利用索引,能够大幅度的提升数据库的查询性能。
关于索引的合理应用,还在研究中。
。
Oracle 模糊查询方法的更多相关文章
- JAVA 模糊查询方法
当我们需要开发一个方法用来查询数据库的时候,往往会遇到这样一个问题:就是不知道用户到底会输入什么条件,那么怎么样处理sql语句才能让我们开发的方法不管接受到什么样的条件都可以正常工作呢?这时where ...
- Oracle 模糊查询 优化
模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段 like '%关键字%' 字段包含"关键字"的记录 即使在目标字段建立索引也不会走索引,速度最慢 (2 ...
- 某表含有N个字段超精简模糊查询方法
我们在做多个字段模糊查询时,是不是觉得非常麻烦?比如我要模糊查询某表多个字段存在某数据时,如下 select * from table where a like '%key%' or b like ...
- Oracle模糊查询CONCAT参数个数无效
在使用MyBatis操作Oracle数据库的时候,写模糊查询突然发现原本在MySql中正确的代码,在Oracle中报错,参数个数无效 <if test="empId!=null and ...
- vue 如何实现 Input 输入框模糊查询方法
原理:原生js的indexOf() 方法,该方法将从头到尾地检索数组,看它是否含有对应的元素.开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时).如果找到一个 item, ...
- oracle模糊查询mysql的区别
https://blog.csdn.net/weixin_38673554/article/details/86503982#_1 oracle与使用mysql的区别 https://www.cnbl ...
- 关于mongodb按照字段模糊查询方法
模糊查询:tname包含某个关键字测试' cd /opt/soft/mongodb/bin ./mongo --host 192.168.0.1 --port 17017 test db.test ...
- oracle模糊查询提高效率的方法
转载:https://blog.csdn.net/weixiaohuai/article/details/83513957 https://blog.csdn.net/chihen/article/d ...
- oracle模糊查询效率提高
1.使用两边加‘%’号的查询,oracle是不通过索引的,所以查询效率很低. 例如:select count(*) from lui_user_base t where t.user_name lik ...
随机推荐
- Fortran学习记录1(Fortran数据类型)
Fortran中的字符 Fortran中的常量 Fortran中的变量 Fortran的I-N规则 Fortran中的有效位数 Fortran中的申明 Fortran中的表达式 Fortran中的语句 ...
- C字符串指针遇到的问题
看下面的示例代码: int main() { char *ptr = "GeeksQuiz"; printf("%c\n", *&*&*ptr) ...
- Mysql+MHA高可用集群
http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/
- Spring中RestTemplate的使用方法
一.REST 在互联网中,我们会通过请求url来对网络上的资源做增删改查等动作,这里的请求包含两部分:动词,主要包括增.删.改.查:名词,就是网络中的各种资源.传统的非REST风格的请求方式是把动词和 ...
- 19. REFERENTIAL_CONSTRAINTS
19. REFERENTIAL_CONSTRAINTS REFERENTIAL_CONSTRAINTS表提供有关外键的信息. REFERENTIAL_CONSTRAINTS有以下列: CONSTRAI ...
- c++_包子凑数
标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就会 ...
- LeetCode(78) Subsets
题目 Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset m ...
- JSP默认选中下拉框的某一项
注意<c:if>标签要写在<option>标签里面 <select id="salesInventory_${s.index}" style=&quo ...
- jenkins里跑selenium webdriver,Chrome浏览器不能打开&&unknown error: unable to discover open pages
在windows的cmd里面执行 “python test.py”,毫无问题,浏览器正常打开,测试结果也正常. 问题: 但如果是在jenkins里,选择 “execute windows batch ...
- 【ITOO 4】WCF中,分布式事务处理
导读:事务可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠.在项目中,就有 ...