Mysql 生成案例编号
我需要使用perl和mysql生成这样的案例编号: xx-201012080001 第一部分只是几个字符,然后是日期。这个 最后四位是问题所在,它应该从0001开始并递增 每种情况一个。真正的问题是它必须在0001重新启动 每天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
有关如何执行此操作的任何建议?使用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
您没有提供足够的信息。这个程序是一个持续运行的守护进程/服务器吗?或者它只是根据请求运行(比如脚本或网页)?您是否使用共享数据存储(如数据库)?