我有以下有效记录查询:
$this->db->select('id, firstname, surname');
$this->db->from('users');
$this->db->where('site_id',$siteid);
$this->db->like('firstname', $name);
$this->db->or_like('surname', $name);
$query = $this->db->get();
这样可以正常工作,但我在DB中的名字可以包含大写和小写名称。如果案例不匹配,则查询失败。
我有什么方法可以忽略我的查询案例吗?
答案 0 :(得分:1)
在mysql中操作区分大小写的一种方法是在db中以大写或小写的形式使用firstname字段,并以该格式转换给定的字符串并匹配它。
编辑:喜欢是一个运算符,它取决于您使用的数据库,它将区分大小写。在postgres中,它是不区分大小写的,因为在mysql中它区分大小写。所以这取决于您使用的数据库。
编辑:另一种有效但不是那么有用的方法是在给定字段上使用ucase()或lcase()函数,然后匹配匹配的小写或大写。虽然它会有性能问题。
答案 1 :(得分:1)
试试这个,它适用于我: (您可以在两侧使用较低或较高模式进行不敏感查询)
$this->db->select('id, firstname, surname');
$this->db->from('users');
$this->db->where('site_id',$siteid);
$this->db->like('lower(firstname)', strtolower($name));
$this->db->or_like('lower(surname)', strtolower($name));
$query = $this->db->get();