我有一个名为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
我还按照另一个问题(如何在MySQL中实现关键字搜索?(中的建议使用了以避免一些问题:
SELECT * FROM BIO WHERE info LIKE CONCAT('%','LTR','%');
结果是一样的。
我不想要像前 2 行这样的结果,例如:糖酸脂酶
我希望有:
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 "。
注意:您也可以使用正则表达式来执行相同的操作。 但是对于单词边界和字符串开头和结尾的匹配项来说,这很棘手。