按搜索关键字的每个数字进行mysql搜索查询

时间:2017-03-15 05:58:07

标签: php mysql

我在数据库中有一个数字

    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  |

2 个答案:

答案 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";

我希望这会有所帮助。