2015-02-23 53 views
-1

我希望能夠將任何給定的字符與WHERE子句匹配。mySql匹配字符串中的任何字符

例如,如果我有以下描述字段

「藍T恤XL與背面獅子」

後的表項:

SELECT* FROM products WHERE name LIKE 'tshirt' 

。 ..沒有返回

我也許可以在php中爆炸字符串,並在每個字母后使用通配符%,但是這個soun d像一個小任務的很多操作。

有沒有人有更好的方法來解決這個問題?

非常感謝

+0

在你說你想要一個更好的方法之後,你目前有4個人建議通配符......在那裏_可能_是修改你的數據庫的方法(例如,添加一個關鍵字列並與之匹配)來獲得您最終想要的;如果你澄清你想要的東西,你可能會得到更好的答案 – Foon 2015-02-23 12:53:23

回答

0

最後我做這樣的:

$filter = implode('%',str_split($filter)); 
$filter = '%'.$filter.'%'; 

,然後執行SQL:

select * from產品名稱像$ filter

0

您必須添加%這是在像wildcard ..

SELECT* FROM products WHERE name LIKE '%shirt%' 
0

你應該使用%

SELECT* FROM products WHERE name LIKE '%tshirt%' 

%是零個或更多的替代品字符。

由於信件可能會改變,你應該將其轉換爲下限或上限:

配套完善查詢:

SELECT * FROM products 
WHERE lower(name) LIKE '%tshirt%' 
    OR lower(name) LIKE '%t_shirt%' 

_是單個字符的替代品。

查看更多示例wildcards

0
SELECT * FROM products WHERE name LIKE '%tshirt%'; 

這匹配任何包含字符串'tshirt'的字符串。 %是通配符。

0

首先,你需要通配符:因爲連字符的

where name like '%tshirt%' 

然而,這仍然無法完全幫助。您也可以使用lower()確保該案件無關緊要。也許這就是更多你想要什麼:

where replace(lower(name), '-', '') like '%tshirt%' 

或者是:

where lower(name) like '%t%shirt%'