MySQL Active记录查询忽略大小写
我有以下活动记录查询:
$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();
这工作正常,但数据库中我的名称可以包含大写和小写名称。如果大小写不匹配,则查询失败。
有什么办法可以忽略查询中的大小写吗?
I have the following active record query:
$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();
This works fine with the exception that my names within the DB can contain upper and lowercase names. If the case does not match, the query fails.
Is there any way I can ignore the case with my query?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
试试这个,它对我来说效果很好:
(两边都可以使用lower或upper模式来进行不敏感查询)
Try this, it works fine for me:
(you can use lower or upper mode in both sides to insensitive query )
在 mysql 中操作区分大小写的方法之一是在 db 中将名字字段设置为大写或小写,并将给定字符串转换为该格式并进行匹配。
编辑:like 是一个运算符,它取决于您使用的数据库是否区分大小写。在 postgres 中,它不区分大小写,而在 mysql 中,它区分大小写。所以这取决于您使用的数据库。
编辑:另一种可行但不太有用的方法是在给定字段上使用 ucase() 或 lcase() 函数,然后与匹配的小写或大写字母进行匹配。尽管它会存在性能问题。
One of the way to manipulate case sensitivity in mysql to have your firstname field in either upper or lower case in db and convert given string in that format and match it.
edit: like is an operator and it depends on the database you use that it will be case sensitive or not . In postgres , it is case insenstive where as in mysql it is case sensitive. So it depends on the database you are using.
edit: Another working but not that useful way will be to use ucase() or lcase() function on given field and then match with lowercase or uppercase of match. Though it will have performance issues.