1

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

单个插入将是这样的:

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)。

感谢大家的帮助!

维克拉姆

4

2 回答 2

2

由于您已经降低了增量,看来您所缺少的只是LPAD.

LPAD(@i, 4, '0')

将在 的左侧添加重复的“0”,以@i使生成的字符串至少有 4 个字符宽。

您甚至可以将增量逻辑放在触发器中。

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 ;
于 2010-02-15T05:25:00.280 回答
0

使用 0-9 创建临时表

在此组合查询之后,根据需要多次连接该表(2 - 00 - 99 等)

在此之后执行 INSERT ... 从子查询中选择

;-)

和 LPAD() 用于前导零

于 2010-02-15T05:13:26.730 回答