sql查询where子句在值中添加额外的空格

时间:2016-07-19 10:28:42

标签: php mysql

我在DB中搜索Bootjack Fire and Rescue Foundation的关键字 由于单词后面有单个空格,我的查询是“

WHERE `title` LIKE  '%Bootjack Fire and  Rescue Foundation%'

为什么搜索标题中的and关键字后面有两个空格,您可以在查询中看到?

添加查询

$keyword = 'Bootjack Fire and Rescue Foundation';

$this->db->select('stores.id,store_title,store_category_id,store_sub_category_id,store_sub_category_type_id,sub_category_fourth,store_link');
$this->db->from('stores');
$this->db->join('users','users.id=stores.user_id');
$this->db->join('store_category','stores.store_category_id=store_category.id');

$where="`store_title` LIKE  '%".$keyword."%'";
$this->db->where($where);
$this->db->where('store_status', 1);
$this->db->where('store_type', 2);
$this->db->where('store_category.status', 1);
$this->db->order_by('store_title','ASC');
$this->db->order_by('store_category_id');

2 个答案:

答案 0 :(得分:1)

您可以将多个空格转换为单个空格,然后使用相同的like子句。

$where="replace(replace(replace(store_title,' ','<>'),'><',''),'<>',' ') LIKE  '% replace(replace(replace(".$keyword".,' ','<>'),'><',''),'<>',' ') %'";

考虑<>符号不会出现在该列值中,否则需要使用其他一些符号。 我在SQL-SERVER中使用它也应该在Mysql中工作。

您可以删除php中的多个空格,如下所示......

$keyword=preg_replace('/\s+/', ' ',$keyword);

然后使用简单的sql作为...

$where="store_title LIKE '% ".$keyword" %'";

答案 1 :(得分:1)

我认为在查询中不可能直接使用。

您可以转换关键字以修复任何错误的数据。

我希望它可以帮到你。