我有一个名为 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/