【发布时间】:2020-01-25 13:04:35
【问题描述】:
我想从我的 codeigniter 模型中的以下 varchar 类型列中选择 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);
}
但没有得到预期值。有人可以帮忙吗?
【问题讨论】:
-
我很想修改架构,存储年份?和不?分别
-
使用查询
SELECT CAST(MAX(SUBSTRING(auto_no, -5)) AS UNSIGNED) AS max_no FROM auto_tableSQL Fiddle -
@马丹。没关系。但是该函数应该包含在 $this->db->....... 中
-
你可以这样做:)
$this->db->select(..., false)。使用false作为第二个参数来接受原始 SQL。
标签: php mysql sql codeigniter max