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

时间:2017-03-15 21:10:16

标签: 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 ansferase

我想:

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

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

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

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

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

注意:您也可以使用正则表达式来执行相同的操作。但是字符串的边界和匹配在字符串的开头和结尾处是很棘手的。