【问题标题】:How to Use SQL SELECT WHERE LIKE with a string that has spaces? [duplicate]如何使用带有空格的字符串的 SQL SELECT WHERE LIKE? [复制]
【发布时间】:2019-04-27 02:25:30
【问题描述】:

当我这样做时,例如,搜索“你好”,我会得到所有使用“你好”的实例。但是,如果我搜索“hello my”,我只会得到这两个词相互跟随的实例。

$search = 'hello my';
$search = explode(' ', $search);

一旦我把它炸开,我不知道该怎么办,我尝试过使用这样的 for 循环:

for($i = 0; $i < count($search); $i++) {
    $search = $search[$i];
}

我还尝试将我的 SQL SELECT 放在 for 循环中,以便它进行多次搜索,但没有奏效。我的 SQL 语法如下所示:

SELECT * FROM table WHERE string LIKE '%$search%';

【问题讨论】:

  • 如果搜索词是hello my,你想匹配什么?

标签: php sql


【解决方案1】:

您可以尝试这样的方法来搜索搜索字符串中的任何单词:

$search = 'hello my';
$search = explode(' ', $search);
$query = "SELECT * FROM table WHERE string LIKE '%" . implode("%' OR string LIKE '%", $search) . "%'";
echo $query;

输出:

SELECT * FROM table WHERE string LIKE '%hello%' OR string LIKE '%my%'

如果要在搜索字符串中搜索所有个单词,请将上面代码中的OR改为AND

$query = "SELECT * FROM table WHERE string LIKE '%" . implode("%' AND string LIKE '%", $search) . "%'";
echo $query;

输出:

SELECT * FROM table WHERE string LIKE '%hello%' AND string LIKE '%my%'

Demo on 3v4l.org

【讨论】:

    猜你喜欢
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2011-03-09
    • 2020-08-30
    • 1970-01-01
    • 2012-10-04
    相关资源
    最近更新 更多