我有一个名为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
最好的方法是什么?
答案 0 :(得分:1)
这有点棘手。但是对于您的示例,以下内容将起作用:
select *
from BIO
where concat(' ', replace(info, '-', ' '), ' ') LIKE '% LTR %';
逻辑是什么?它在info
的开头和结尾放置一个空格,并用空格替换所有连字符。对于您问题中的示例,您想要的LTR的出现将是" LTR"。
注意:您也可以使用正则表达式来执行相同的操作。但是字符串的边界和匹配在字符串的开头和结尾处是很棘手的。