根据列的字符串长度从 MySQL 中选择 - CodeIgniter [重复]
Posted
技术标签:
【中文标题】根据列的字符串长度从 MySQL 中选择 - CodeIgniter [重复]【英文标题】:Select from MySQL based on string length of a column - CodeIgniter [duplicate] 【发布时间】:2014-10-24 02:06:50 【问题描述】:我正在使用 CodeIgniter 根据 1 列的字符串长度是否大于 1 从 mysql 表中选择数据。
代码:
$this->db->order_by('time_stamp', 'desc');
$this->db->where('strlen(user_categrory)>1');//I know this code does not work but that's what I wanted to achieve
$data['record']=$this->db->select('username, user_category, email, source, status, test_group, time_stamp, referrer_email')->get('user');
关于如何完成这项工作的任何建议?非常感谢。
【问题讨论】:
【参考方案1】:将 false 作为 where() 的第三个参数传递,CodeIgnite 不会从第一个参数 https://ellislab.com/codeigniter/user-guide/database/active_record.html#select 中转义字符串。然后你可以使用 MySQL 的 LENGTH() 函数:
$this->db->where('LENGTH(user_categrory)>1', null, false);
此外,您可能需要使用 CHAR_LENGTH() 而不是 LENGTH(),因为 LENGTH() 以字节为单位,而 CHAR_LENGTH() 是实际字符。
【讨论】:
【参考方案2】:strlen 函数在 mysql 中不起作用,请使用 LENGTH 函数获取字符串长度,请按照此代码试一试。
$this->db->select('username, user_category, email, source, status, test_group, time_stamp, referrer_email');
$this->db->order_by('time_stamp', 'desc');
$this->db->where('length(user_categrory)>1');
$data['record']=$this->db->get('user');
【讨论】:
以上是关于根据列的字符串长度从 MySQL 中选择 - CodeIgniter [重复]的主要内容,如果未能解决你的问题,请参考以下文章