当前位置: 首页 > 面试题库 >

MySQL查询:使用通配符进行匹配

巴帅
2023-03-14
问题内容

我有一个名为“ acts”的表,该表具有3个被索引在一起的列:

act_name, short_description, main_description

在表格中,一行有一个名为“红色暴动”的行为

当我执行以下搜索时,结果中会出现红色暴动:

SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*r*' IN BOOLEAN MODE)

但是,如果我对此进行扩展并搜索,*re*则不会返回任何结果:

SELECT * from acts where MATCH(act_name, short_description, main_description) AGAINST ('*re*' IN BOOLEAN MODE)

这是为什么?有没有更好的方法在查询中使用通配符?

我尝试更改*为,%但这在任一查询上均未返回任何结果。


问题答案:

值“ re”是MATCH()搜索的停用词。

http://dev.mysql.com/doc/refman/5.5/en/fulltext-
stopwords.html

[编辑]

的确,“ re”是一个停用词,但之所以不起作用,是因为全文搜索排除了源材料中长度小于系统变量ft_min_word_len的值(其默认值为4)的单词。

因此,搜索“ red *”将找到包含“ redder”和“ reddest”而不是“ red”的记录。

http://sqlfiddle.com/#!2/16d442/1



 类似资料:
  • 本文向大家介绍Mysql| 使用通配符进行模糊查询详解(like,%,_),包括了Mysql| 使用通配符进行模糊查询详解(like,%,_)的使用技巧和注意事项,需要的朋友参考一下 通配符的分类: %百分号通配符: 表示任何字符出现任意次数 (可以是0次). _下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符. like操作符: LIKE作用是指示mysql后面的搜索模式是利用通

  • 问题内容: 我很难用Elasticsearch构建查询。 我想查询类似的东西: 所以我试图构造的是这样的: 但这似乎返回一个错误。 谁能给我一个指针,我应该如何看待用Elasticsearch进行这种OR查询? 我当前的数据已发送: 和我的查询: 返回此错误: 问题答案: 这是由于JSON格式错误所致。此查询的正确JSON格式如下-

  • 问题内容: 通常,在使用SELECT查询数据库时,通常希望查找与给定搜索字符串匹配的记录。 例如: 该查询应为我提供所有记录,其中“ Bob Smith”出现在名称字段中的任何位置。 我想做的是相反的。 我想查找名称字段在“ Robert Bob Smith III,PhD。”(查询的字符串参数)中的所有记录,而不是查找在名称字段中具有“ Bob Smith”的所有记录。 问题答案: 只是转一下喜

  • 问题内容: 我有两个表,并且具有一对多关系。一个可能与许多相关联。 我想做的是运行一个查询,该查询查找具有特定的attributeID集合的所有dataID。我不能: 那将使用那些属性中的任何一个来获取所有的dataID,我想要具有所有这些属性的dataID。 有什么建议吗? 仍然使用比基本选择更多的查询来解决问题。 问题答案: 由于您需要读取表的三个不同行,因此建议使用来避免子查询。

  • 问题内容: 我正在使用Jesey在Java(JAX-RS)中实现Restful Web Service。我在Tomcat v7.0上运行它,我使用Hibernate将数据映射到数据库(MySQL)。我有一个查询来获取可交付成果的列表: 它给了我一百个可交付成果,但我想在Task表中拥有前三名。感谢您的帮助。如何修改查询? 请注意,这三个可交付成果不应重复。 与@FGreg答案存在冲突。当我使用这些

  • 本文向大家介绍浅谈mysql通配符进行模糊查询的实现方法,包括了浅谈mysql通配符进行模糊查询的实现方法的使用技巧和注意事项,需要的朋友参考一下 在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符。 首先我们来了解一下2个概念,一个是操作符,一个是通配符。 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后面的搜索模式是利用通配符而不是直接相等匹配进行比较。