2015-02-23 52 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%'