【问题标题】:how to write CHAR_LENGTH sql query in codeigniter如何在 codeigniter 中编写 CHAR_LENGTH sql 查询
【发布时间】:2013-07-14 12:15:06
【问题描述】:

我想写这个sql查询

SELECT count(*) FROM menu WHERE CHAR_LENGTH(CONTENT) > 20;

进入Codeigniter查询,怎么写?请帮忙。

我正在尝试用下面的查询编写上面的 sql 查询。

  public function record_count() { 
     $this->load->database(); 
     $this->db->where('parent_id >','0');
    // $this->db->where('content>','20');   //if the field "content" is greater then 20 characters
     $this->db->from('menu');  
    return $this->db->count_all_results();
}

【问题讨论】:

    标签: mysql codeigniter


    【解决方案1】:

    你可以在那里使用 MySQL LENGTH() 函数:

    $this->db->where('LENGTH(content)>','20');
    

    codeigniter 可能有一个内部函数,当您在字符串列上使用符号 >< 时会自动添加 LENGTH 但是我无法确认,因为我不是 codeigniter 专家并且 我也怀疑它是否这样做,所以我会告诉你坚持以上。

    请记住,如果您的内容以数字开头,那么 MySQL 也可能会匹配该数字,因此假设您的内容以 21 开头,那么它将被匹配。

    As you can see here in this sample it's not a common habit on MySQL itself

    【讨论】:

    • 谢谢,它的工作。我使用$this->db->where('content >','20'); 而不是您的答案,但这也给了我相同的结果。那么使用LENGTH有什么用呢,哪个更好用呢?
    • @Danny 据我所知,Codeigniter does not calculateLength 的字符串通过使用<> 符号,这些用于比较数字字段。顺便说一句,SQL LENGTH() function 返回字符串的长度(以字节为单位),例如mysql> SELECT LENGTH('text'); 返回4
    • @HashemQolami 但是,如果您的文本以数字开头,MySQL 会尝试匹配它,如示例链接所示。
    • @Prix 没错,毫无疑问,我只是关注LENGTH()的基本用法,并试图弄清楚CI如何处理<>运算符。
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2017-11-18
    • 2011-03-06
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2021-02-06
    • 1970-01-01
    相关资源
    最近更新 更多