Oracle数据库sql语言like模糊查询使用的问题。

Oracle数据库sql语言like模糊查询使用的问题。,第1张

通配符是进行模糊查询时用到的,比如有个字段是字符串,你想找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性能优化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10193059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存