MySQL - 如何在句子的一列中搜索完全匹配的单词?

标签 mysql search

<分区>

我有一个包含句子列表的 MySQL 表,例如:

id | Sentence 
---+---------------------------------------------------------------
 1 | Come On Boys, You Can do it my boy.
 2 | Everything is possible, impossible itself says I am possible.
 3 | Boys I know possible solutions are good!
 4 | Possible solutions are all failed its also possible

我必须在 Sentence 列中搜索像 possible 这样的确切单词。

有一些条件:

  1. 搜索词不能是任何词的前缀或后缀。

    • 搜索词 possible , impossible 不正确。
  2. 标点符号可以在单词之前或之后。例如:!boyboy,

  3. 不区分大小写意味着 possible Possible 是正确的。

我尝试了一个查询,但它不起作用

mysql_query("SELECT * FROM products WHERE Sentence LIKE '%".$search."%'");

可能的标点符号是,.!?;-

我需要一个可行的解决方案。提前致谢 !

最佳答案

你可以使用 REGEXP:

SELECT *
FROM products
WHERE Sentence REGEXP '[[:<:]]possible[[:>:]]'
--                       ^^^            ^^^ word boundaries

这将对应于被单词边界包围的匹配 possible。请注意,在演示中,标点符号算作单词边界。

另请注意,MySQL 的 REGEXP 不区分大小写,因此以上内容应匹配 possiblePossible

此处演示:

Rextester

关于MySQL - 如何在句子的一列中搜索完全匹配的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43140920/

相关文章:

php - 在 PHP codeigniter 中访问对象变量

php - 如何使用 PHP PDO 解析 MySQL 数据库中的对象数据?

java - MySQL 检查日期为 0000-00-00 00 :00:00? 的情况

search - 有谁知道网络上详细描述 Lucene 索引格式的合适文档在哪里?

javascript - 无法使用在 Angular 7 中创建的自定义管道进行搜索

MySQL - 求和,但仅当所有条件满足时

php - 多数据库没有值(value)

ruby-on-rails - Rails 4搜索选项。有哪些选项可以将完整的HTML网站搜索与ActiveRecord搜索结合在一起?

java - 如何在 O(log(N)) 时间内查找排序数组中一定范围内的整数个数?

java - 索引正则表达式(最好在 Lucene 中)