根据列的字符串长度从 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 基于选择查询中列的第一个字符进行过滤

MySql TEXT 列的最大字符长度是多少?

根据列的数据优先级选择记录 - mysql

sql语句修改字段长度

MySQL中char与varchar数据类型选择原则

MySQL:如何根据从另一个表中选择的值填充现有表的新列[关闭]