使用增加的引用更新postgresql表列

时间:2018-04-23 11:20:36

标签: sql postgresql

我有一个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

1 个答案:

答案 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;