我有一个postgres栏double []:{100,101,102}。
我想将每个元素除以10,因此结果应为{10.0,10.1,10.2}。
我只找到了带有for语句的解决方案,但是如何通过简单的查询来实现呢? (我需要通过liquibase更新)
替代方法是编写Java迁移,但我希望使用简单的查询...
谢谢!
更新:
出现的第二个问题是:
通过Liquibase java-migration脚本执行此操作时,您将获得liquibase.database.jvm.JdbcConnection
(通过liquibase.change.custom.CustomTaskChange
),它当然不支持postgres-arrays = /。
如何以这种方式处理数组? (我使用liquibase-core 3.5.5)
答案 0 :(得分:3)
您需要取消嵌套,分裂然后聚合回来。
update the_table
set the_array = array(select t.val / 10
from unnest(the_table.the_array) as t(val));
如果您需要保留数组中的原始顺序,请使用with ordinality
update the_table
set the_array = array(select t.val / 10
from unnest(the_table.the_array) with ordinality as t(val,idx)
order by t.idx);
要在Liquibase中运行此程序,您需要使用<sql>
更改