2013-04-05 22 views
1

我有一個查詢。是否有任何內置函數或任何其他與MySQL相關的方法,它將返回數據庫表字段中包含EXACT字的行?我知道,使用MySQL LIKE運算符,您可以在列中搜索指定模式,該列將匹配包含通配符字符的模式字符串的字符串值。但是使用MySQL LIKE子句,它也會返回子字符串條目。MySQL確切的詞存在檢查表中字段

例如,

假設3倍中的值象下面這樣:

1. "Take another shot of courage" 

2. "The End of This age is Not Yet" 

3. "Employers can obtain this wage rate by submitting a request" 

我想要檢索的列值包含確切的詞「時代」

所有行如果我們像這樣

SELECT * FROM sometable WHERE somefield LIKE '%age%' 
準備查詢

它會返回所有三行。但我的意圖只是獲得第二排。我們如何實現這一目標?提前致謝。

乾杯,
JENSon。

+1

如果總是會有一個空間之前和之後的年齡,爲什麼不使用LIKE「%年齡%」 – 2013-04-05 10:46:02

+2

將兩個空間之前和之後的年齡,看看作品。我的意思是'%age%' – 2013-04-05 10:48:05

+0

閱讀全文搜索,'%age%'對我來說不是解決方案。 – mkjasinski 2013-04-05 10:48:32

回答

6

使用此查詢

SELECT * FROM sometable WHERE somefield LIKE '% age %' 
OR somefield LIKE 'age %' OR somefield LIKE '% age' 
+1

給我貼了郵件! – 2013-04-05 10:49:50

+0

+1爲此答案.. :) – 2013-04-05 10:59:19

2

試試這個

1 SELECT * FROM sometable WHERE somefield LIKE '% age %' to search in middle of string 

2 SELECT * FROM sometable WHERE somefield LIKE '% age' if word is at end of string 

3 SELECT * FROM sometable WHERE somefield LIKE 'age %' if your word is at starting of the string 
5

您可以使用MySQL的正則表達式引擎並匹配單詞邊界字符[[:<:]][[:>:]]

這將匹配age但不couragewageaged。它也將匹配-age-或其他任何其他行的文本age包圍非字字符的年齡。這意味着它將在字符串的開頭和結尾匹配age

在我看來,這比閱讀三個條件要複雜一點。如果返回像-age-這樣的匹配是可以接受的,那麼你可以考慮這個。

我還沒有測試過這個查詢的性能或可移植性,所以你也可以考慮這個。

SELECT * FROM sometable WHERE somefield RLIKE '[[:<:]]age[[:>:]]';