亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Codeigniter MySQL select max using varchar type

Codeigniter MySQL select max using varchar type

PHP
臨摹微笑 2022-08-19 09:56:49
我想從我的代碼標記器模型中的以下 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);    }但沒有得到預期的價值。任何人都可以幫忙嗎?
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超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


查看完整回答
反對 回復 2022-08-19
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

一種選擇是使用自定義查詢:

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

包括MySQL DB的眾所周知的字符串運算符。


查看完整回答
反對 回復 2022-08-19
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

可以通過使用值,然后提取最后 5 個字符的數量來檢索 naximum 值:MAX()varchar

select right(max(in_num), 5) + 0
from tablename

觀看演示。
結果:

825


查看完整回答
反對 回復 2022-08-19
  • 3 回答
  • 0 關注
  • 155 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號