MySQL手动插入多个固定长度值

时间:2010-02-15 05:09:39

标签: mysql insert fixed-length-record

我想在表中插入多个值,其中一列中的值按顺序递增。但是,由于业务需求,序列有点复杂。

单个插入将是这样的:

INSERT INTO blah (col1, col2) VALUES ('SU0001', 'myemail');

现在,col1是需要递增的值,但保留固定长度结构。所以下一个插入应该是这样的:

INSERT INTO blah (col1, col2) VALUES ('SU0002', 'myemail');

等等..直到:

INSERT INTO blah (col1, col2) VALUES ('SU1600', 'myemail');

如何仅使用SQL执行此操作。我可以很容易地在Java和Ruby中做到这一点,但我坚持这个并尝试了几件事,但大多数似乎没有保持固定长度结构(它变成SU1,SU2,而不是SU0001,SU0002)。

感谢您的帮助!

维克拉姆

2 个答案:

答案 0 :(得分:2)

由于您已经减少了增量,因此您看到的所有内容都是LPAD

LPAD(@i, 4, '0')

会在@i的左侧添加重复的'0',以便生成的字符串至少为4个字符。

您甚至可以将增量逻辑放在trigger

delimiter //
CREATE TRIGGER incr_col1 BEFORE INSERT ON blah
FOR EACH ROW BEGIN
  SET @prev=(SELECT COALESCE(MAX(col1), 0) FROM blah);
  SET NEW.col1 = CONCAT('SU', LPAD(1+SUBSTR(@prev, 3), 4, '0'));
END //
delimiter ;

答案 1 :(得分:0)

使用0-9

创建TEMPORARY TABLE

在这个撰写查询后,根据需要连接该表的次数(2 - 00-99等)

之后执行INSERT ... SELECT from subquery

- )

和前导零的LPAD()