Oracle 模糊查询like %%

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
   在这个信息量剧增的时代,如何帮助用户从海量数据中检索到想要的数据,模糊查询是必不可少的。那么在Oracle中模糊查询是如何实现的呢?

一、我们可以在where子句中使用like关键字来达到Oracle模糊查询的效果;在Where子句中,可以对datetime、char、varchar字段类型的列用Like关键字配合通配符来实现模糊查询,以下是可使用的通配符:
(1)% :零或者多个字符,使用%有三种情况
字段 like ‘%关键字%’字段包含”关键字”的记录
字段 like ‘关键字%’字段以”关键字”开始的记录
字段 like ‘%关键字’字段以”关键字”结束的记录
例子:
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)函数,比使用’%关键字%’的模式效率高很多。

instr函数也有三种情况:
instr(字段,’关键字’)>0相当于 字段like ‘%关键字%’
instr(字段,’关键字’)=1相当于 字段like ‘关键字%’
instr(字段,’关键字’)=0相当于 字段not like ‘%关键字%’
例子:
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比like关键字方法效率要高出不少,但这也仅仅是在一定程度上而言,远不能满足我们的需要。

为什么关键字查询效率这么低呢?这是由于在利用这些关键字查询的时候,数据库系统不是通过索引来查询,而是采用顺序扫描的方式来查询。显然,真是这种技术特性,造成了Like关键字查询效率的低下。特别是在复杂查询或者大表查询中,用户可以明显感觉到速度比较慢。

怎么解决效率的难题呢?答案也正是索引。
合理的利用索引,可以大幅度的提升数据库的查询性能。
关于索引的合理应用,还在研究中。。

mapper.xml中like%%”使用表达式 concatbind。 阅读详情

相关推荐

OracleLIKE操作符的用法及示例代码

通过使用LIKE操作符,我们可以根据指定的模式进行模糊匹配,以便在查询中找到符合条件的字符串。使用通配符可以更精确地定义匹配的模式。然而,需要注意的是,LIKE操作符可能对性能产生影响,特别是在大数据量的情况下,因此在实际应用中需要谨慎使用。在本篇文章中,我们将详细介绍OracleLIKE操作符的用法,并提供一些示例代码来帮助理解。需要注意的是,LIKE操作符在进行模糊匹配时,可能会导致性能下降,特别是在大数据量的情况下。在上述语法中,列名是要搜索的列名,表名是要搜索的表名,模式是要匹配的模式。

WaFlask的博客 2055

oracle like模糊查询

  一、简单的方式 最常用,最简单的方式是使用“%” 和 “_”。 字符匹配操作可以使用通配符 “%” 和 “_”: %:表示任意个字符,包括零个; _:表示一个任意字符; escape关键字实现like匹配特殊字符,以及&字符的转义。     例如: SQL> select * from dept;  DEPTNO DNAME          LOC   ...

weixin_34259159的博客 2243

编程语言的未来走向:趋势、挑战与机遇

同时,鼓励他们接触和掌握一些专业领域的开发工具和技术框架,比如Web开发中的JavaScript、React.js,数据分析的Python(Pandas, NumPy, Matplotlib等),以及人工智能和机器学习领域的TensorFlow、PyTorch等。当前,全球范围内正积极推动编程教育的普及化,从儿童启蒙阶段到高等教育阶段,乃至终身学习的过程中,如何优化编程语言的教学方法、提高教学质量,并将其广泛应用于不同领域,是教育者与政策制定者面临的重大课题。未来,编程语言的多样化和包容性将会继续加强。

zrc_xiaoguo的博客 1792

mysql中like % %模糊查询

1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。 另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件 SELECT * F...

斜阳雨陌 6万+

MySQL基础扎实——Like声明中的%什么意思

有时候,不可大喜过望,所以就需要我们按捺住,静下来!

IT小辉同学 4554

Oracle中查询 使用 like %% 字段 模糊查询

【代码】Oracle中查询 使用 like %% 字段 模糊查询。

MZ199290的博客 786

Oracle 模糊查询like %%和instr(strSource,strTarget)

Oracle中提供了instr(strSource,strTarget)函数,比使用’%关键字%’的模式效率高很多。 模糊查询: instr(strSource,strTarget) 返回的是StrTarget在StrSource中的位置,从默认1开始,length(字段名)返回字段名长度。 结尾 此处查询最后一个 SELECT * FROM 用户.表 WHERE INSTR(字段名, ‘...

qq_43047126的博客 758

怎么解决mysql模糊查询满慢_MySQL Like模糊查询速度太慢如何解决

问题:明明建立了索引,为何Like模糊查询速度还是特别慢?Like是否使用索引?1、like %keyword 索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。2、like keyword% 索引有效。3、like %keyword% 索引失效,也无法使用反向索引。使用mysql的explain简单测试如下:explain selec...

weixin_39907289的博客 722

MyBatis之Like模糊查询的两种实现方式

MyBatis之Like模糊查询的两种实现方式

yuanjinshenglife的专栏 3455

Oracle数据库下用concat函数模糊查询之参数个数无效

一直报错参数个数无效,模糊查询的sql语句还是concat('%','s','%')这样写的 但实际上oracle中不支持concat的三个参数的拼接,需要更正为 select * from SYS_MENU where url like concat(concat('%',#{roleName}),'%') 或者使用 select * from SYS_MENU where urllike'%' ||#{roleName}|| '%'; ...

人生最遗憾的莫过于:轻易地放弃了不该放弃的,固执地坚持了不该坚持的 2432

解决oracle匹配字符串的时候 ' 导致的问题

今天在oracle里面用“=”匹配参数的时候,由于参数里面带有 ’ ,导致出现语句未正常结束的错误出现,在经过多方查询之后,找到了解决的办法,只需要将 ’ 用 %”%这个替换掉即可...

我的博客 734

oracle中sql like查询,oracle sql语言模糊查询--通配符like的使用教程详解

oracle在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:% 零或者多个字符_ 单一任何字符(下划线)\ 特殊字符oracle10g以上支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的...

weixin_42330839的博客 2178

Oracle模糊查询

今天对oracle的数据,直接修改的时候,发现了ESCAPE 这个词觉得平时没有使用,需要总结一下Oracle的模糊查询。 0、数据源 1、ESCAPE的使用 题目:1、查询出ZD_BH含有符号‘ 的SQL 答: 方法1:SELECT * FROM T_CB_SCZDK WHERE ZD_BH = '%NSC''002'; 方法2:SELECT * FROM T_CB_SC...

Sicily_winner的博客 1516

oracle sql语言模糊查询--通配符like

oracle sql语言模糊查询--通配符like的使用教程2009-02-19 15:56<br />oracle sql语言模糊查询--通配符like的使用教程<br />在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:<br />%   零或者多个字符<br />_    单一任何字符(下划线)<br />/     特殊字符<br />[]     在某一范围内的字符,如[0-9]或者[a

sufuchao的专栏 725

Oracle,Mysql ,SQL Server 三大数据库带参数的模糊查询, 拼接查询条件问题

最近项目开发一直在不断切换数据库,有时候一条sql 要同时考虑多种数据库中的兼容问题 , 先总结一条模糊查询拼接查询条件的问题,后续追加总结. 目前使用 mybatis: 1. Oracle 中使用 "||" 来进行拼接参数条件,如 :   select * from user where name like '%' || #{name} ||'%'...

weixin_34378969的博客 380

oracle sql语言模糊查询--通配符like的使用教程

oracle在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:%   零或者多个字符_    单一任何字符(下划线)\     特殊字符 oracle10g以上支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR...

weixin_39214481的博客 1052

Oraclelike模糊查询及通配符

like 模糊查询 这就要用的like模糊查询了,其通配符如下: % 表示零个或多个字符 (1)_ 单一任意字符 (2)\ 特殊字符 [ ] 在某种范围内的字符,如[0-9]、[abcd] [^ ] 不在某种范围内的字符,如[0-9]、[abcd] 其中条件模糊查询,Oracle数据库中常用的有下面两种方式: 1、% 表示任意零个或多个字符。可匹配任意类型和长度的字符,一般使用两个百分号(%%)表示。 如下示例:把其中带有S的名字全部查询了出来。 2、_ 表示任意单个字符。匹配单个任意字符,常用来限制要查询

逆风的蔷薇 2880

oracle模糊查询符号,oraclesql语言模糊查询--通配符like的使用教程详解

oracle在Where子句中,可以对datetime、char、varchar字段类型的列用Like子句配合通配符选取那些“很像...”的数据记录,以下是可使用的通配符:% 零或者多个字符_ 单一任何字符(下划线)\ 特殊字符oracle10g以上支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REG...

weixin_39897127的博客 1027

数据库中使用Like模糊查询太慢

问题:明明建立了索引,为何Like模糊查询速度还是特别慢? Like是否使用索引?   1、like %keyword 索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。   2、like keyword% 索引有效。   3、like %keyword% 索引失效,也无法使用反向索引。 可通过explain select * from company_info where cname like ‘%小%’ explain selec

liuerchong的博客 2291
上一篇: jdbc 链接数据库配置Properties 方法
下一篇: MVC模型 el jstl
qq1350048638
博客等级 码龄9年 23粉丝 154原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值