1.需求:第一次生成的订单号为:D0000001,以后的每个新订单编号都累加1;
2.实现思路
当初我也是碰到一个需求里面要用到编号生成,百度看了一下别人的例子,好多都不符合我的需求,于是自己写了俩demo;同时也就发了出来,跟着思路随手写的当然里面还有很多需要优化的地方。
1.直接在数据库写一个自定义函数; 以后要是如果有订单编号取值规则变动的话直接维护函数即可;这种方式对程序的兼容性和扩展性比较好;
-- 创建自定义函数
create function testNum() returns varchar(50)
begin
-- 声明一个变量用来存放输出值
declare outNumStr varchar(50);
-- 查询逻辑体
select concat(left('D0000000',length('D0000000') - length(cast(substr(signNum,2,length(signNum)) as unsigned)+1)),
cast(substr(signNum,2,length(signNum)) as unsigned)+1) as signNum
FROM 你的订单表名 order by createTime desc limit 1 into outNumStr ;
-- 返回值
return outNumStr;
end;
/
-- 删除函数
drop function testNum
/
-- 查询函数
select testNum()