Php Codeigniter MySQL使用varchar类型值选择最大值

Php Codeigniter MySQL使用varchar类型值选择最大值,php,mysql,sql,codeigniter,max,Php,Mysql,Sql,Codeigniter,Max,我想从我的codeigniter模型中的以下varchar type列中选择max auto_no +------------+ | auto_no | +------------+ | 2020-00821 | | 2020-00822 | | 2020-00823 | | 2020-00824 | | 2020-00825 | +------------+ 在本例中,该值为825。我尝试了以下选项 public function generate_auto_no($count =

我想从我的codeigniter模型中的以下varchar type列中选择max auto_no

+------------+
|  auto_no   |
+------------+
| 2020-00821 |
| 2020-00822 |
| 2020-00823 |
| 2020-00824 |
| 2020-00825 |
+------------+ 
在本例中,该值为825。我尝试了以下选项

public function generate_auto_no($count = 1, $start = 00000, $digits = 5)
    {
        $query = $this->db->get('letter_letter');
        $this->db->select("MAX(CAST(SUBSTRING_INDEX(auto_no, '-', -1) AS UNSIGNED)) AS auto_no", FALSE);        
        $count = ($query->num_rows() > 0) ? $query->row()->auto_no + 1 : 0;
        $result = array();
        for ($n = $start; $n <= $start + $count; $n++) {
            $result[] = str_pad($n, $digits, "0", STR_PAD_LEFT);
        }
        return date("Y").'-' . end($result);
    }

但是没有得到预期的值。有人能帮忙吗?

一个选项是使用自定义查询:

$this->db->query(" SELECT MAX( CAST( SUBSTR(auto_no,INSTR(auto_no,'-')+1,LENGTH(auto_no)) AS SIGNED) ) FROM tab ");

包括MySQL DB的著名字符串运算符。

可以通过对varchar值使用MAX,然后提取最后5个字符的数量来检索naximum值:

select right(max(in_num), 5) + 0
from tablename
看。 结果:


我想您可以选择最大字符串:

$this->db->select\u maxauto\u no; $query=$this->db->get'letter_letter'; 如果$query->num\u rows>0{ $last\u auto\u no=$query->row->auto\u no; $no=intvalexplode'-',$last_auto_no[1]+1; $auto_no=dateY.'-'.str_pad$no,$digits,0,str_pad_LEFT; }否则{ $auto_no=dateY.'-'.str_pad0,$digits,0,str_PAD_LEFT; } 返回$auto_no
我很想修改这个模式,来存储年份?而不是?单独使用查询从auto_table@Madan中选择castmasubstringauto_no,-5作为无符号的max_no。没关系。但是这个函数应该包含在$this->db->………中,您可以这样做:$this->db->select…,false。使用false作为第二个参数来接受原始SQL。@forpas。你能把你的建议加入$this->db->select_max@forpas吗。不,那不是。在Codeigniter中,应该使用$this->db->select_max在左边@TsaiKoga。但是它没有包括表名。将表格设为字母_letter@MCITTrends然后使用gettable_name@TsaiKoga。但它重新运行最小值为2020-00001。所有功能均按编辑完成。请。再见edit@MCITTrends我想你可以拿着max auto_no,像我的帖子一样增加它。@TsaiKoga。我认为这接近于预期产出。但是出现了错误,消息:Undefined offset:1 Filename:models/Letter_model.php行号:346
825