用MySQL如何生成BW001、BW002这样的编号,求各位用户,帮帮忙啊。
一、使用MySQL函数生成编号
使用MySQL的函数可以实现生成编号的需求,具体方法如下:
1. 首先新建一个表,该表用于存放编号得变量
CREATE TABLE sequence (
seq_name varchar(20) not null primary key, -- 序列名称
seq_value int unsigned not null -- 序列的值
) Engine=InnoDB;
2. 初始化序列的值
INSERT INTO sequence(seq_name, seq_value) VALUES('code_seq', 0);
3. 为需要生成编号的表添加一个自增字段
ALTER TABLE tablename ADD COLUMN id int unsigned NOT NULL AUTO_INCREMENT;
4. 创建一个存储过程,在该存储过程中使用MySQL函数:Concat、Substring和Lpad组合即可得到需要的编号
CREATE PROCEDURE get_code(OUT r_code varchar(10))
BEGIN
-- 更新序列
UPDATE sequence SET seq_value = seq_value + 1 WHERE seq_name = 'code_seq';
-- 查询当前序列值
SELECT seq_value INTO @v_seq_val FROM sequence WHERE seq_name = 'code_seq';
-- 生成编号
SET r_code = CONCAT('BW',
LPAD(SUBSTRING(@v_seq_val, -3), 3, '0'));
END
5. 在需要的地方调用存储过程即可
CALL get_code(@code);
select @code;
设置一个自增id,然后使用 SELECT CONCAT('BW',LPAD('1', 3, '0') ) ; 可以生成,
或者创建一个表,用来保存后边的序号,然后每次生成就查这个表的序号,生成数据之后序号再加1操作
insert的时候通过Java应用程序调用插入生成,或者自己在数据库中自定义函数生成
不知道你这个问题是否已经解决, 如果还没有解决的话: