我想從我的代碼標記器模型中的以下 varchar 類型列中選擇最大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); }但沒有得到預(yù)期的價值。任何人都可以幫忙嗎?
3 回答

滄海一幻覺
TA貢獻1824條經(jīng)驗 獲得超5個贊
我瘦你可以只選擇最大字符串:
$this->db->select_max("auto_no");
$query = $this->db->get('letter_letter');
if ($query->num_rows() > 0) {
$last_auto_no = $query->row()->auto_no;
$no = intval(explode('-', $last_auto_no)[1]) + 1;
$auto_no = date("Y").'-' . str_pad($no, $digits, "0", STR_PAD_LEFT);
} else {
$auto_no = (date("Y").'-' . str_pad(0, $digits, "0", STR_PAD_LEFT));
}
return $auto_no

翻翻過去那場雪
TA貢獻2065條經(jīng)驗 獲得超14個贊
一種選擇是使用自定義查詢:
$this->db->query(" SELECT MAX( CAST( SUBSTR(auto_no,INSTR(auto_no,'-')+1,LENGTH(auto_no)) AS SIGNED) ) FROM tab ");
包括MySQL DB的眾所周知的字符串運算符。

幕布斯7119047
TA貢獻1794條經(jīng)驗 獲得超8個贊
可以通過使用值,然后提取最后 5 個字符的數(shù)量來檢索 naximum 值:MAX()
varchar
select right(max(in_num), 5) + 0 from tablename
觀看演示。
結(jié)果:
825
- 3 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消