Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 生成案例编号_Mysql_Perl - Fatal编程技术网

Mysql 生成案例编号

Mysql 生成案例编号,mysql,perl,Mysql,Perl,我需要使用perl和mysql生成这样的案例编号: xx-201012080001 第一部分只是几个字符,然后是日期。这个 最后四位是问题所在,它应该从0001开始并递增 每种情况一个。真正的问题是它必须在0001重新启动 每天 有关如何执行此操作的任何建议?使用sprintf生成字符串: my $casenumber = sprintf("%2s-%8d%04d", $twochars, $date, $increment); 例如,在命令行上: $ perl -e 'printf("%2

我需要使用perl和mysql生成这样的案例编号:

xx-201012080001

第一部分只是几个字符,然后是日期。这个 最后四位是问题所在,它应该从0001开始并递增 每种情况一个。真正的问题是它必须在0001重新启动 每天


有关如何执行此操作的任何建议?

使用sprintf生成字符串:

 my $casenumber = sprintf("%2s-%8d%04d", $twochars, $date, $increment);
例如,在命令行上:

$ perl -e 'printf("%2s-%8d%04d\n", "aa", "20101211", 2);'
$ aa-201012110002
至于将计数重置为1,请为迭代中的每条记录保留一个名为$lastDate的变量。如果$lastDate!=$currentDate,将计数器重置为1

例如:

# assumes @records contain arrayrefs with relevant info from mysql
# also assumes the data is sorted by date.
my $count = 1;
my $lastDate;
my $currentDate;
for my $record (@records)
{
   my $twochars    = $record->[0];
   my $currentDate = $record->[1];
   if($currentDate != $lastDate)
   {
     $count = 1;
   }
   my $casenumber  = sprintf("%2s-%8d%04d", $twochars, $currentDate, $count++);
   $lastDate = $currentDate;
}

使用这样的查询如何:

select casenr from cases where casenr like ? order by 1 desc limit 1
其中,
是今天的前缀(“xx-20101208”)


这将为您提供今天的最后一个casenr或
NULL
,然后只需增加后缀或将其设置为
0001

您没有提供足够的信息。这个程序是一个持续运行的守护进程/服务器吗?或者它只是根据请求运行(比如脚本或网页)?您是否使用共享数据存储(如数据库)?