2014-10-10 64 views
1

我有一个包含这样的序列的表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 

回答

1

将结果保存成一个字符串,然后尝试这个..

$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" 
+0

GRATE THANKS.saved我的日子 – 2014-10-10 06:11:46

1

如果从数据库中,你可以获取数据阵列也试试这个 -

假设你已经赚得即$设置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) 
2

DATABSE级别试试这个。这可以帮助你在代码优化:)

select max(coverNoteNo), (SUBSTRING(max(coverNoteNo),0 , 15))+cast(cast((SUBSTRING(max(coverNoteNo),15 ,20)) as int)+1 as varchar) from covernotenonmotor 
相关问题