我有这个字符串"Beautiful sunset"
(通知的双重空间)如何搜索数据库时搜索词是否包含空格的字符串?
当我在数据库中搜索:
SELECT * FROM images WHERE title LIKE '%$string%'
,我搜索"Beautiful sunset"
(通知单空间)它赢得不会返回任何结果。
我该如何解决这个问题?
我有这个字符串"Beautiful sunset"
(通知的双重空间)如何搜索数据库时搜索词是否包含空格的字符串?
当我在数据库中搜索:
SELECT * FROM images WHERE title LIKE '%$string%'
,我搜索"Beautiful sunset"
(通知单空间)它赢得不会返回任何结果。
我该如何解决这个问题?
你可以搜索字符串拆分为使用空间的多个部分,然后建立这样一个SQL的每一部分你已经分裂:
SELECT * FROM images WHERE title LIKE '%$part[0]%'
or title LIKE '%$part[1]%'
or title LIKE '%$part[2]%'
or title LIKE '%$part[3]%'
...
确保跳过双空间/空部分。你可以这样做
的方法之一是使用字符串替换通配符来代替空格:
$string = str_replace(" ", "%", $string);
$Query = "SELECT * FROM images WHERE title LIKE '%$string%'";
通过空间分割字符串。 现在你有两个字符串类似$ STR1,$ STR2 修剪这两个字符串(即除去开头和结尾的空格) 然后重建串 $字符串= $ STR1 +“%” + $ STR2
如果你不”不知道你会得到什么字符串(如果它不是“美丽的夕阳”),你可以爆炸字符串并根据它进行查询。像这样......
$c = false;
$stringtosearch = "Beautiful sunset";
$query = "SELECT * FROM images WHERE";
foreach(explode(" ", $stringtosearch) as $b)
{
if ($c)
{
$query .= " or";
}
$query .= " title LIKE " . $b;
$c = true;
}
然后你会得到变量$查询与您的查询字符串。
试试这个
SELECT * FROM images WHERE where MATCH(title) AGAINST ('$string' IN BOOLEAN MODE)
检查此链接也
http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
Yup与我合作....在此列上添加全文索引以获得更快的结果 – 2012-01-13 13:20:41
那是双数据库空间真的有必要吗?如果我是你,我可能会在将字符串插入数据库之前将多余的空格修剪到一个空格中。 – 2012-01-13 11:27:04