【问题标题】:Select from MySQL based on string length of a column - CodeIgniter [duplicate]根据列的字符串长度从 MySQL 中选择 - CodeIgniter [重复]
【发布时间】: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');

关于如何完成这项工作的任何建议?非常感谢。

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案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');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-24
        • 1970-01-01
        • 1970-01-01
        • 2018-10-20
        • 2017-08-19
        • 1970-01-01
        相关资源
        最近更新 更多