通配符是进行模糊查询时用到的,比如有个字段是字符串,你想找abc开头的字符串,因为abc开头的字符串有很多很多,可能会有abc、abcd、abcdd。。。。。。。,也就是说abc后面可能会有0个字符(abc),也可能有多个字符(abcd、abcdd。。。。),你得写xxxx like 'abc%' ,再打个比方,你查找全部姓王的同事,你可以写 xxxx like '王%',姓王的可能是2个字,也可能是3个字
查一个单词第四个字母是a的应该这样表达:xxxx like '____a%'
如果不用通配符,like相当于=
like是用来按照你要求查找字符串地
明白了吗?
以下语句调试通过:
SELECT FROM course WHERE name LIKE '%晓%'运行效果:
注意事项:
使用 like %name% 这样的语句是不会走索引的,相当于全表扫描;
数据量小的时候不会有太大的问题,数据量大了以后性能会下降的很厉害;
建议数据量大了以后使用搜索引擎来代替这种模糊搜索;
实在不行也要在模糊查询前加个能走索引的条件。
进行SQL性能优化的方法:
1、SQL语句不要写的太复杂。一个SQL语句要尽量简单,不要嵌套太多层。
2、使用『临时表』缓存中间结果。简化SQL语句的重要方法就是采用临时表暂存中间结果,这样可以避免程序中多次扫描主表,也大大减少了阻塞,提高了并发性能。
3、使用like的时候要注意是否会导致全表扫,有的时候会需要进行一些模糊查询例如:select id from table where username like ‘%hollis%’关键词%hollis%,由于hollis前面用到了“%”,因此该查询会使用全表扫描,除非必要,否则不要在关键词前加%。
4、尽量避免使用!=或<> *** 作符。在where语句中使用!=或<>,引擎将放弃使用索引而进行全表扫描。
5、尽量避免使用 or 来连接条件;在 where 子句中使用 or 来连接条件,引擎将放弃使用索引而进行全表扫描。可以使用
select id from t where num=10
union all
select id from t where num=20
替代
select id from t where num=10 or num=20
6、尽量避免使用in和not in:在 where 子句中使用 in和not in,引擎将放弃使用索引而进行全表扫描。可以使用
select id from t where num between 10 and 20
替代
select id from t where num in (10,20)
7、可以考虑强制查询使用索引
select from table force index(PRI) limit 2;(强制使用主键)
select from table force index(hollis_index) limit 2;(强制使用索引"hollis_index")
select from table force index(PRI,hollis_index) limit 2;(强制使用索引"PRI和hollis_index")
8、尽量避免使用表达式、函数等 *** 作作为查询条件;尽量避免大事务 *** 作,提高系统并发能力。尽量避免使用游标;任何地方都不要使用 select from t ,用具体的字段列表代替“”,不要返回用不到的任何字段。
9、尽可能的使用 varchar/nvarchar 代替 char/nchar。尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。
10、索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率、并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引。
select gmt_Id_i ,gmt_Name_v,
(select count() from tb_mgoods where goods_MoreType_v=tb_mgoodsmoretypegmt_Id_i) as counts
from tb_mgoodsmoretype where gmt_Id_i in(10,121)
MySql 使用 like关键字 进行模糊查询,like关键字 通常用在 where条件查询,like关键字 通常配合 %、_、[ ]、[^ ] 使用。
%表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
注意:只能查询连续的文字。比如“深圳市福田区”可以查询,“深圳市区”查询不出来
注意:此语句没有那么灵活,比较适用于固定的某个文字的查询。
注意:此语句比较灵活,可以查询相隔几个文字,比较实用。比如“深圳市福田区小学”可以查询,“深圳市福区小”也可以查询
表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。
表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
以上就是关于Oracle数据库sql语言like模糊查询使用的问题。全部的内容,包括:Oracle数据库sql语言like模糊查询使用的问题。、mysql如何使用like关键字实现模糊查询有什么注意事项、如何进行SQL性能优化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)