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


mySql match any character from the string

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

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

"背部有狮子的蓝色T恤XL"

之后:

SELECT* FROM products WHERE name LIKE 'tshirt'

不返回任何内容

我也许可以在php中分解字符串,并在每个字母后面使用通配符%,但这听起来像是一个小任务的许多操作。

有人能找到更好的方法吗?

非常感谢

我最终是这样做的:

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

然后执行sql:

从名称类似$filter 的产品中选择*

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

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

首先,您需要通配符:

where name like '%tshirt%'

然而,由于连字符的原因,这仍然不会完全有帮助。您也可以使用lower()来确保大小写无关紧要。也许这正是你想要的:

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

或者:

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

您必须添加%,它是类似..中的通配符。。

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

您应该使用%:

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

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

由于字母可能会改变,您应该将其转换为小写或大写:

完整而完美的查询:

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

_是单个字符的替代品。

请参阅通配符中的更多示例。