用pmysql如何生成BW001这样的编号

用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应用程序调用插入生成,或者自己在数据库中自定义函数生成

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^