【发布时间】:2011-04-11 17:39:43
【问题描述】:
我有以下活动记录查询:
$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();
这很好用,但我在数据库中的名字可以包含大写和小写的名字。如果大小写不匹配,则查询失败。
有什么方法可以忽略我的查询的情况吗?
【问题讨论】:
-
MySQL 通常不区分大小写。你桌子上的排序规则是什么?这会生成什么 SQL?
-
您好,Ken,感谢您的及时回复。该表的排序规则是'utf8_bin',生成的SQL如下:
codeSELECTid,firstname,surnameFROM (users) WHEREsite_id= '1' ANDfirstnameLIKE '%ben%' 或surnameLIKE '%ben%' -
看来 UTF8_bin 是我的问题 - [link]stackoverflow.com/questions/4558707/…
-
@Ken 您应该尽量不要将您的代码限制在特定的数据库服务器或排序规则中。如果您在任何情况下都想要不区分大小写的搜索,请分别存储搜索字段的小写或大写并搜索它们。
-
确认是我的排序规则设置设置为 UTF8_bin 并导致了问题。非常感谢@Ken 为我指明了正确的方向。最好的问候,本。
标签: mysql codeigniter activerecord case-insensitive