我有一个postgresql表,它有一个引用列(不同于id)。
我想在桌面上进行迭代,并为每一行添加一个参考代码(' ITEM001'' ITEM002"等)。
如果我想要使用相同的引用更改所有行,我会这样做:
UPDATE stock SET reference = 'ITEM001';
如何根据ID更新所有表的列?
现状:
id name reference
1 item-name-1
2 item-name-2
3 item-name-3
10 item-name-10
11 item-name-11
期望的结果:
id name reference
1 item-name-1 IT001
2 item-name-2 IT002
3 item-name-3 IT003
10 item-name-10 IT010
11 item-name-11 IT011
答案 0 :(得分:1)
您可以使用to_char()
格式化数字:
UPDATE stock
SET reference = 'IT' || to_char(id, 'FM000');
格式掩码的FM
参数确保格式化的值不包含任何空格。
但总的来说,存储可以从现有数据中轻松获得的信息是一个坏主意。
更好的解决方案是创建一个返回该信息的视图:
create or replace view stock_with_reference
as
select *, 'IT' || to_char(id, 'FM000') as reference
from stock;