mysql - 如何在 MySQL 中实现对特定单词的关键字搜索?

标签 mysql sql search keyword

我有一个名为 BIO 的表,其中包含一些生物描述,我想在 mysql 中查询关键字。 例如我想查询“LTR”,所以我使用了代码:

select * from BIO where info LIKE '%LTR%';

结果是:

id  info
1   Adenylate isopentenyltransferase       
2   Glycosyltransferase         
3   LTR element
4   Non-LTR retroelement
5   Putative non-LTR 
6   Histone LTR element

我还按照另一个问题 ( How to implement a Keyword Search in MySQL? ) 中的建议使用来避免一些问题:

SELECT * FROM BIO WHERE info LIKE CONCAT('%','LTR','%');

结果是一样的。

我不想要像前两行那样的结果,例如: 糖基ltr转化 enzyme

我想要:

id  info
3   LTR element
4   Non-LTR retroelement
5   Putative non-LTR 
6   Histone LTR element

怎么做最好?

最佳答案

这有点棘手。但是对于您的示例,以下将起作用:

select *
from BIO
where concat(' ', replace(info, '-', ' '), ' ') LIKE '% LTR %';

这是什么逻辑?它在 info 的开头和结尾放置一个空格,并将所有连字符替换为空格。对于您问题中的示例,您想要的 LTR 的出现将是“LTR ”。

注意:您也可以使用正则表达式来做同样的事情。但是单词边界和字符串开头和结尾的匹配很棘手。

关于mysql - 如何在 MySQL 中实现对特定单词的关键字搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42820730/

相关文章:

mysql - 如何将这些表连接在一起?

c# - 从 winforms 应用程序到 Azure SQL 的安全连接字符串

search - Liferay search通过 Assets 标签和关键字进行上下文搜索

用于搜索具有无限数量位字段的表的 SQL 设计方法

mysql - 来自 SELECT 的多个 UPDATE,WHERE 子句中包含多行 [Mysql]

php - Elasticsearch-分数词匹配/部分词匹配

mysql - Oracle DB,mysql不能做什么?

mysql - 在 MySQL 中确定给定数字的因子数而不重叠

python - 使用 sqlalchemy 语句和表达式 api 生成多个连接

php - MySQL简单查询