使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:1.select * from tb where name like '%XX%';2.select * from tb where instr(name,'XX')>0; 若是在name字段上没有加索引,两者效率差不多,基本没有区别. 为提高效率,我们在name字段上可以加上非唯一性索引:create index idx_tb_name on
concat() 函数,是用来连接字符串. 精确查询: select * from user where name=”zhangsan” 模糊查询: select * from user where name like “%zhang%” 在实际的使用中,条件是作为参数传递进来的. 所以我们使用 concat() 函数 mybatis: select * from user where name like concat(“%”, #{name},”%”) 原生SQL: case when ?1
第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…) 三.排序 语法:select 字段1, 字段2, ... from 表名 where 条件 order by 字段 [asc|desc] asc :升序 desc :降序 默认是升序asc SELECT * FROM s
注:MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果: 如下所示: MySQL: select * from tableName where name like '%helloworld%'; Oracle:select * from tableName where instr(name,'helloworld')>0; --这两条语句的效果是一样的
昨天在处理一个字符拆分的功能时,用用到了insrt()函数,偶然发现其实特可以代替模糊查询的like,经多次测试可节约效率一倍以上. 代码如下: select distinct(a.deptname) from sys_depart a, gzdb_task b where instr(a.deptname,b.acceptor ) > 0; select distinct(a.deptname) from sys_depart a, gzdb_task b where a.deptname l
instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(title,'手册')=0 相当于 title not like '%手册%' t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标.但经过实际测试发现,like的效率与instr函数差别相当大.下面是一些测试结果: SQL> set timi