2012-10-09 41 views
0

我得到一个表,其中列名为items,其值为'',它大约有1000行,我们如何在PostgreSQL中使用存储过程查询以将每个项重命名为唯一值像增量值列即使用PostgreSQL中的存储过程更新列

items0001, items0002, items003,.....items1000 

试过,但它不工作

UPDATE product SET items=CASE 
      WHEN items='' THEN items='items'+1 
      ELSE items123 

      END 
+0

您是否尝试过的东西?如果是的话,你有什么尝试? – keyser

+0

''items'+ 1'是无效的SQL。 –

回答

1

假设你的表中有一个名为id一个主键列下面应该这样做:

update product 
    set items = new_items.new_item 
from (
    select id, coalesce(items,'')||to_char(row_number() over(), 'FM00009') as new_item 
    from product 
) as new_items 
where new_items.id = p.id 
and product.items is null or product.items = ''; 
+0

你将如何更新其值为零的项目 – dude

+0

@dude:你没有在你的问题中提到有关null的任何内容。看到我的编辑 –

+0

语法错误处于或接近“over” – dude

0
UPDATE product SET items=CASE 
     WHEN len(items)>0 THEN items='items'+1 
     ELSE items123 

     END 
+0

OP想要用增量值来更新该列,例如items0001,items0002,items003,... –

+0

但我在列名中获得了像油罐车,拼图等项目...我只想更新具有值的行null – dude

+0

''items'+ 1'是无效的SQL。 –

0

更新产品组项目= CASE WHEN len(items)> 0 THEN'items'|| somesequence.nextval ELSE项目 END