2017-03-15 121 views
1

我有一個名爲BIO的表,有一些生物學描述,我想在mysql中查詢關鍵字。 例如,我想查詢「LTR」,所以我使用的代碼:如何實現一個關鍵字在MySQL中搜索特定的單詞?

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','%'); 

而結果是一樣的。

我不希望像前兩行的結果,例如: 糖基 ansferase

我想有:

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

是如何做到的最好方式它?

回答

1

這有點棘手。但對於你的例子,以下將起作用:

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

什麼是邏輯?它在info的開頭和末尾放置一個空格,並用空格替換所有連字符。對於你的問題中的例子,你想要的LTR的出現將是「LTR」。

注意:您也可以使用正則表達式來做同樣的事情。但是,在字符串的開始和結尾處使用邊界和匹配是很棘手的。

+0

很棒的建議。是否有可能添加到這個查詢也獲得「組蛋白/ LTR」或「LTR /任何東西」?我忘了在我的問題中包括這個。 – Paul

+1

它與這一個 - 選擇*從BIO哪裏concat('',REPLACE(REPLACE(info,' - ',''),'/',''),'')LIKE'%LTR%'; – Paul

相關問題