在MySQL查询中以不同的字顺序查找字符串

时间:2016-12-12 11:08:54

标签: php mysql

这可能是一个非常基本的问题,但我希望有人可以帮忙吗?

假设我有一个MySQL表,其中包含一个名为exampleString的字段,它是一个文本字段

在一个记录中,字段exampleString包含以下文本:

"苹果橘子梨"

现在,我想要做的是(PHP)如下:

  1. 执行查询以搜索"苹果橙子梨" - 我可以做到,没问题。

  2. 执行查询以搜索" oranges apple pears"并且它将使用字符串"苹果橙子梨"返回记录。在其中 - 我不知道该怎么做。 (注意:如果查询搜索字符串只是"橙子梨"它不应该返回记录)。

  3. 我还希望能够使查询不区分大小写,并且我也不确定如何执行此操作(尽管我还没有搜索过)。

1 个答案:

答案 0 :(得分:1)

您可以对输入中的每个单词使用PHP for循环并进行SQL查询。

在MySQL中,您可以使用LIKE "%[your_string]%"搜索字符串内容[your_string] http://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html

所以,如果你需要匹配'apple oranges pears'和'apples pears oranges',你需要做类似的事情:

LIKE "%apples%" AND LIKE "%oranges%" AND LIKE "%pears%"

因此,您会发现字符串内容apple AND oranges AND pears没有重要性

现在在php中,the explode function转换数组中的字符串

所以,最终代码的例子(根据你的情况调整干净和安全。测试你的vars等)

$string = 'apples oranges pears';

$explode = explode(' ', $string);

$whereString = '';
foreach ($explode as $key => $value) {
    $whereString .= ' AND [your_field] LIKE "%'.$value.'%"';
}

echo $whereString;