如何基于ID为PostgreSQL表批量生成递增参考编码
基于id批量生成递增参考编码的PostgreSQL实现
针对你需要基于id字段批量生成ITEM001、ITEM010这类格式参考编码的需求,我整理了一个简单高效的解决方案:
直接执行下面的UPDATE语句就能完成批量更新:
UPDATE stock SET reference = concat('ITEM', lpad(id::text, 3, '0'));
语句细节解释
lpad(id::text, 3, '0'):先把数字类型的id转换成文本格式,再用lpad函数在字符串左侧填充0,确保最终是3位长度的字符串。比如id=1会变成'001',id=10变成'010',完美匹配你要的格式。concat('ITEM', ...):把固定前缀ITEM和补零后的id字符串拼接起来,得到最终的参考编码。
提前预览结果(可选)
如果担心误操作,可以先运行这条SELECT语句,提前确认生成的编码是否符合预期:
SELECT id, name, concat('ITEM', lpad(id::text, 3, '0')) AS expected_reference FROM stock;
执行完UPDATE后,你的表数据就会变成你期望的样子:
id | name | reference
1 | item-name-1 | ITEM001
2 | item-name-2 | ITEM002
...
10 | item-name-10 | ITEM010
11 | item-name-11 | ITEM011
扩展说明
如果以后你的id可能超过三位数(比如到1000),只需要调整lpad的第二个参数为对应位数即可,比如改成4的话,就会生成ITEM1000这样的编码:
UPDATE stock SET reference = concat('ITEM', lpad(id::text, 4, '0'));
内容的提问来源于stack exchange,提问作者user3450862




