2013-03-04 82 views
0

有沒有辦法使用全文搜索來運行Mysql查詢,該搜索將搜索列(例如hayes),並用「hayes」替換剩下的匹配字符串?使用全文搜索來搜索並替換列Mysql

列1: 倫敦,海耶斯,MD15 736

WHERE MATCH (COLUMN1) AGAINST ('hayes' IN BOOLEAN MODE) 

列1: 海耶斯

如此以來,第1列匹配 「海耶斯」 其刪除字符串的其餘部分。它需要通過全文完成,例如在大型數據集上花費的時間太長。

還有就是關鍵字,也許這樣我就可以不使用find_in_set

而且我會用大量的關鍵字,如下面運行這個沒有固定的順序:

WHERE MATCH (COLUMN1) AGAINST ('hayes' IN BOOLEAN MODE) 
OR MATCH (COLUMN1) AGAINST ('+WEST +BROMWICH' IN BOOLEAN MODE) 
OR MATCH (COLUMN1) AGAINST ('London' IN BOOLEAN MODE) 

所以,如果我運行上方包含以下字符串COLUMN1查詢:

london, m456, hayes < < <它只會和不匹配海耶斯倫敦和海耶斯。

回答

0

您可以嘗試查找至少包含其中一個單詞的行。

 AGAINST ('+hayes +London' IN BOOLEAN MODE) 

,如果你想找到兩個單詞都包含的行然後使用這個

AGAINST ('+hayes London' IN BOOLEAN MODE) 

編輯:

UPDATE table 
SET COLUMN1 = 
     'HAYES' 
WHERE 
    COLUMN1 
LIKE 
    '%hayes%'; 

如果你有更多的關鍵字使用像

UPDATE table 
    SET COLUMN1 =if(
    COLUMN1 LIKE '%hayes%', 'HAYAS', if( 
    COLUMN1 LIKE '%derby%' ,'DERBY' , if(
    COLUMN1 LIKE '%wawwaw%' ,'WAWAWA', Column1))) 
+0

我已經知道我需要能夠取代th整個字符串與關鍵字匹配時,你知道我可以做到這一點? – 2013-03-04 12:43:59

+0

我沒有明白你的意思,舉例請登錄 – 2013-03-04 12:55:56

+0

編輯我的答案,這是什麼意思? – 2013-03-04 12:58:56