我希望能够将任何给定的字符与WHERE子句匹配。mySql匹配字符串中的任何字符
例如,如果我有以下描述字段
“蓝T恤XL与背面狮子”
后的表项:
SELECT* FROM products WHERE name LIKE 'tshirt'
。 ..没有返回
我也许可以在php中爆炸字符串,并在每个字母后使用通配符%,但是这个soun d像一个小任务的很多操作。
有没有人有更好的方法来解决这个问题?
非常感谢
我希望能够将任何给定的字符与WHERE子句匹配。mySql匹配字符串中的任何字符
例如,如果我有以下描述字段
“蓝T恤XL与背面狮子”
后的表项:
SELECT* FROM products WHERE name LIKE 'tshirt'
。 ..没有返回
我也许可以在php中爆炸字符串,并在每个字母后使用通配符%,但是这个soun d像一个小任务的很多操作。
有没有人有更好的方法来解决这个问题?
非常感谢
最后我做这样的:
$filter = implode('%',str_split($filter));
$filter = '%'.$filter.'%';
,然后执行SQL:
select * from产品名称像$ filter
您必须添加%
这是在像wildcard ..
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%'
_
是单个字符的替代品。
查看更多示例wildcards。
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%'
在你说你想要一个更好的方法之后,你目前有4个人建议通配符......在那里_可能_是修改你的数据库的方法(例如,添加一个关键字列并与之匹配)来获得您最终想要的;如果你澄清你想要的东西,你可能会得到更好的答案 – Foon 2015-02-23 12:53:23