2015-03-19 98 views
2

我有字符串在MySQL數據庫類似如下搜索特定詞在MySQL

"Good Mayer Brown Corporate & Securities" 
"Three Mayer Brown Good & Securities" 
"Three Mayer Brown Corporate & Good" 
"Three Mayer Brown Goodies & Securities" 

我需要找到確切的詞不喜歡爲LIKE %%關鍵字。下面是示例,

我需要使用"Good"關鍵字選擇行。這將選擇前3行。最後一有多餘的話就像"ies"這是我期望的結果

"Good Mayer Brown Corporate & Securities" 
    "Three Mayer Brown Good & Securities" 
    "Three Mayer Brown Corporate & Good" 

我已經嘗試下面的查詢。

SELECT * FROM table WHERE myword LIKE '% Good %' OR myword LIKE 'Good%' OR myword LIKE '% Good' 

但這不適用於我。

回答

2
SELECT * FROM table WHERE myword REGEXP '^.*GOOD.*$ 

您可以使用REGEXP做this.Or

SELECT * FROM table WHERE myword REGEXP '[[:<:]]GOOD[[:>:]]' 

使用與word boundary。看到演示。 http://www.sqlfiddle.com/#!9/e1b9d/6/0

+0

@CasimiretHippolyte是啊實際上。 – vks 2015-03-19 10:53:10

1

爲什麼不使用Full Text Search,這與大量的特性優化的方式意味着這類搜索,而不是做這樣的外卡是緩慢的,甚至用%%索引列不作任何指數的影響。如果您不知道如何操作,請參閱手冊。這裏是一個示例爲你

mysql> create table test (search varchar(200),fulltext key(search)) engine=myisam; 
Query OK, 0 rows affected (0.08 sec) 

mysql> insert into test values ('Good Mayer Brown Corporate & Securities'),('Three Mayer Brown Good & Securities'),('Three Mayer Brown Corporate & Good'),('Three Mayer Brown Goodies & Securities'); 
Query OK, 4 rows affected (0.02 sec) 
Records: 4 Duplicates: 0 Warnings: 0 

mysql> select * from test where match(search) against ('good' in boolean mode); 
+-----------------------------------------+ 
| search         | 
+-----------------------------------------+ 
| Good Mayer Brown Corporate & Securities | 
| Three Mayer Brown Good & Securities  | 
| Three Mayer Brown Corporate & Good  | 
+-----------------------------------------+ 
3 rows in set (0.00 sec)