sql – oracle中Like vs Contains()之间的搜索条件差异
我创建了一个包含两列的表.我插入了两行.
id name 1 narsi reddy 2 narei sia 一个是简单的数字类型,另一个是CLOB类型.所以我决定使用索引.我通过使用contains来查询. select * from emp where contains(name,'%a%e%')>0 2 narei sia 我预计2会来,但不会.但是,如果我给予它同样的给予我想要的东西. select * from emp where name like '%a%e%' ID NAME 1 (CLOB) narsi reddy 2 (CLOB) narei sia 2 rows selected 最后,我明白,就像搜索整个文档或段落,但包含正在查找单词. 那我怎样才能获得所需的输出? 解决方法LIKE和CONTAINS是根本不同的搜索方法.LIKE是一个非常简单的字符串模式匹配器 – 它分别识别两个通配符(%)和(_),它们分别匹配零或多或一个字符.在您的情况下,%a%e%匹配表中的两个记录 – 它查找零个或多个字符后跟a,后跟零个或多个字符后跟e,后跟零个或多个字符.它的返回值也非常简单:它返回“匹配”或“不匹配” – 没有灰色阴影. CONTAINS是一个功能强大的搜索工具,它使用上下文索引,它构建了一种可以使用CONTAINS搜索语法搜索的单词树.它可用于搜索单个单词,单词组合,并具有自己丰富的语法,例如布尔运算符(AND,NEAR,ACCUM).它也更强大,它不是返回简单的“匹配”或“不匹配”,而是返回“得分”,可用于按相关性顺序对结果进行排名;例如CONTAINS(col,’dog NEAR cat’)将为文档返回更高的分数,其中这两个单词都被发现在一起. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |