2017-06-16 70 views
0

我想從我的表中選擇記錄。我想要使​​用此查詢:MySQL LIKE用法一個以上的列

select * 
from crawler.crawler_data 
WHERE name_surname, category, description LIKE "%de%"; 

但MySQL不接受此查詢。我想用LIKE搜索所有列。我如何編寫此查詢來搜索LIKE陳述中的多個列?

回答

0

您可以使用CONCAT

SELECT * FROM crawler_data WHERE CONCAT(name_surname, category, description) LIKE "%de%"; 

所以它是連接所有的列,你要檢查到一列。

有些時候,這是不適合的,你要找的字符串可以通過兩列之間的分隔找到,所以給你一個誤報。

爲了解決這個問題,你可以使用CONCAT_WS這是連接具有分隔符。所以:

SELECT * FROM crawler_data WHERE 
CONCAT_WS('-',name_surname, category, description) LIKE "%de%"; 

顯然,分隔符值(-)設置爲是某種串的,你不會在搜索詞(de)有。

參考:MySQL Manaul

+0

感謝@馬丁。這是完美的解決方案! –