我在数据库中有一个数字
88746
65654
78655
67856
09958
55640
我需要在搜索时退出
' 786'表示搜索键是786
search result
88746
78655
67856
输出标准,如果它在该数字组中出现任何7 8 6,则意味着如果我搜索5,即搜索关键字是5,那么我们需要显示所有具有数字5的行。示例关键字是5输出是65654,78655,67856,09958,55640表示数字5出现在所有这组数字中
我需要一个mysql查询来解决这个挑战
我尝试过查询
select * from plates where number LIKE %786%
--------
number |
------ |
88746 |
65654 |
78655 |
67856 |
09958 |
输出
number |
------ |
88746 |
78655 |
67856 |
答案 0 :(得分:1)
如果每个字符的数字较大,则必须检查每个字符。
dy.dx
如果您的搜索输入包含更多或更少的字符,则必须更改查询。我建议您使用某种模板字符串SELECT * FROM plates
WHERE number LIKE '%7%'
AND number LIKE '%8%'
AND number LIKE '%6%'
并使用"number like '%{$i}%'"
将数字放入其中,然后将其附加到现有查询中。
示例:强>
搜索输入为8765。
$i
答案 1 :(得分:0)
首先你需要拆分字符串,
$arr = str_split("786");
array_walk($arr, function (&$item) {
$item = '"%' . $item . '%"';
});
$in_clause = rtrim(implode(" OR ", $arr), 'OR ');
$query = "select * from plates where number $in_clause";
我希望这会有所帮助。