使用PostgreSQL中的存储过程更新列

时间:2012-10-09 10:16:13

标签: sql oracle stored-procedures plsql

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

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

试过这个,但它不起作用

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

          END

3 个答案:

答案 0 :(得分: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 = '';

答案 1 :(得分:0)

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

      END

答案 2 :(得分:0)

更新产品SET items = CASE           当len(项目)> 0那么'项目'|| somesequence.nextval           ELSE项目           END