mySql匹配字符串中的任何字符

时间:2015-02-23 12:48:56

标签: php mysql

我希望能够将任何给定字符与WHERE子句匹配。

例如,如果我在表格中有条目,并带有以下描述字段

“背面有狮子的蓝色T恤XL”

之后:

SELECT* FROM products WHERE name LIKE 'tshirt'

......没有回复

我可以在php中爆炸字符串并在每个字母后使用通配符%,但这听起来像是一项小任务的大量操作。

有人有更好的方法吗?

非常感谢

5 个答案:

答案 0 :(得分:0)

您必须添加% wildcard in .. ..

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

答案 1 :(得分:0)

您应该使用%

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

%可替代零个或多个字符。

由于字母可能会改变,您应该将其转换为更低或更高的字母:

完整而完美的查询

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

_可替代单个角色。

查看wildcards中的更多示例。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

首先,您需要通配符:

where name like '%tshirt%'

然而,由于连字符,这仍然不会完全有所帮助。您还可以使用lower()来确保案例无关紧要。也许这更符合你的要求:

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

或者也许:

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

答案 4 :(得分:0)

我最终这样做了:

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

然后执行sql:

  

从名为$ filter

的产品中选择*