1

有问题Update multiple rows in same query using PostgreSQL Roman Pekar 给出了与此类似的答案;为了我的问题,我已经修改了它:

update test as t set
  column_a = c.column_a,
  column_b = c.column_b
from (values
  ('123', bytea1),   
  ('345', bytea2)  
) as c(column_a, column_b) 
where c.column_a = t.column_a;

在我的例子中,表测试有一个字节类型的列,比如 column_b。但是,这不起作用,因为 c.column_b 是 text 类型,因此会产生一个错误,指出没有从 text 到 bytea 的转换并提示使用强制转换。好吧,使用强制转换也无济于事,因为在引用 LATIN 编码的编码时会出现另一个错误。对于错误的不准确报告,我深表歉意,但我目前无法访问执行这项工作的机器。

似乎 c.column_b 的默认类型是文本。列的类型不能在“as”子句中指定,比如“as c(column_a, column_b type bytea)”或其他方式吗?如果不是,我认为我必须求助于使用一些二进制字符串函数,这至少可以说有点不雅。

4

1 回答 1

1
于 2013-11-02T20:02:14.473 回答