我有一個包含這樣的序列的表B05/FDH/CN/NM/00001,B05/FDH/CN/NM/00002 我需要獲取最大值從DB並將添加到序列。下一個數字是B05/FDH/CN/NM/00003從數據庫中獲取最大值並添加一個
我如何做到這一點
SQL並即時得到最大值爲B05/FDH/CN/NM/00002
select MAX(`coverNoteNo`) as cnumber from covernotenonmotor where users_idusers = 8
我有一個包含這樣的序列的表B05/FDH/CN/NM/00001,B05/FDH/CN/NM/00002 我需要獲取最大值從DB並將添加到序列。下一個數字是B05/FDH/CN/NM/00003從數據庫中獲取最大值並添加一個
我如何做到這一點
SQL並即時得到最大值爲B05/FDH/CN/NM/00002
select MAX(`coverNoteNo`) as cnumber from covernotenonmotor where users_idusers = 8
將結果保存成一個字符串,然後嘗試這個..
$string = 'B05/FDH/CN/NM/00002';
$stringpart = substr($string, 0, -5); // "B05/FDH/CN/NM/"
$numberpart = (integer) substr($string, -5); // "2"
$numberpart = $numberpart+1; // "3"
$numberpart = str_pad($numberpart, 5, "0", STR_PAD_LEFT); // "00003"
echo $result = $stringpart.$numberpart; // "B05/FDH/CN/NM/00003"
如果從數據庫中,你可以獲取數據陣列也試試這個 -
假設你已經賺得即$設置ARR比你可以在一個循環中增加一個陣列結果 -
$arr = array('B05/FDH/CN/NM/00001', 'B05/FDH/CN/NM/00002'); //values from db
$b =array();
foreach($arr as $a)
{
$str = substr($a, 0, -5);
$b[] .= $str.str_pad(substr($a, -5) + 1, 5, "0", STR_PAD_LEFT);
}
print_r($b); //Array ([0] = B05/FDH/CN/NM/00002 [1] = B05/FDH/CN/NM/00003)
在DATABSE級別試試這個。這可以幫助你在代碼優化:)
select max(coverNoteNo), (SUBSTRING(max(coverNoteNo),0 , 15))+cast(cast((SUBSTRING(max(coverNoteNo),15 ,20)) as int)+1 as varchar) from covernotenonmotor
GRATE THANKS.saved我的日子 – 2014-10-10 06:11:46