从db获取最大值并添加一个

时间:2014-10-10 05:52:11

标签: php mysql

我有一个包含如下序列的表 B05 / FDH / CN / NM / 00001,B05 / FDH / CN / NM / 00002 我需要从DB获取最大值并将 1 添加到序列中。下一个号码是B05 / FDH / CN / NM / 00003

我该怎么做

SQL ,我的最大值为 B05 / FDH / CN / NM / 00002

select MAX(`coverNoteNo`) as cnumber from covernotenonmotor where users_idusers = 8

3 个答案:

答案 0 :(得分:2)

数据库级别中尝试此操作。这可以帮助您进行代码优化:)

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

答案 1 :(得分: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"

答案 2 :(得分: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 )