替换PostgreSQL数字[]数组字段中的Infinity值

w41d8nur  于 2023-01-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(207)

我在PG 14 database中有一个表,其中一列包含numeric[]数组中的Infinity值,如下所示:

SELECT id, factors_list FROM mytable ORDER BY id ASC LIMIT 2;

id | factors_list
---+-------------
1  | {Infinity,1,2.91825,2.2911174796669,1.58367915763394,1.96345397169765,1.41599564744287}
2  | {Infinity,1,1.0625,2.114,4.25,2.18021276595745}

此列的数据类型为ARRAY(numeric[]),数组长度为变量(部分记录为NULL):

SELECT column_name, data_type FROM information_schema.columns WHERE 
table_name = 'mytable' AND column_name = 'factors_list';

   column_name  | data_type 
----------------+-----------
 factors_list   | ARRAY

为了将这个数据库表恢复到一个旧的(〈14)PG数据库中,我需要用任何有效的数字替换所有Infinity值,比如99999999
我怎样才能有效地做到这一点呢?(我大约有200'000行)

k7fdbhmy

k7fdbhmy1#

下面这个简单的update语句就可以完成这项工作:

UPDATE mytable 
   SET factors_list = array_replace(factors_list, 'Infinity', 99999999)
 WHERE TRUE;

相关问题