我希望能够将任何给定字符与WHERE子句匹配。
例如,如果我在表格中有条目,并带有以下描述字段
“背面有狮子的蓝色T恤XL”
之后:
SELECT* FROM products WHERE name LIKE 'tshirt'
......没有回复
我可以在php中爆炸字符串并在每个字母后使用通配符%,但这听起来像是一项小任务的大量操作。
有人有更好的方法吗?
非常感谢
答案 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
的产品中选择*