将unnested空值数组插入到双精度列postgresql中

时间:2013-02-05 17:15:09

标签: arrays postgresql casting insert null

假设我在postgresql表中有一个双精度列,并尝试以下INSERTS

案例1:

INSERT INTO schema.table (column_name) VALUES (null);

案例2:

INSERT INTO schema.table (column_name) VALUES (unnest(array[1,null,null,4,5]));

案例3:

INSERT INTO schema.table (column_name) VALUES (unnest(array[null,null,null,null,null]));

案例1和案例2成功执行,但案例3返回以下错误:

  

错误:列“column_name”的类型为double precision,但是   expression的类型为文本LINE 1:INSERT INTO schema.table   (column_name)VALUES(unexst(array [nu ...                                                        ^提示:您需要重写或转换表达式。

我应该如何重新编写案例3,将未经验证的空值数组重新转换为可以插入双精度(或任何数字)列的内容?

1 个答案:

答案 0 :(得分:1)

您需要将空值数组转换为double precision []或float8 []

INSERT INTO schema.table (column_name)
VALUES (unnest(
    array[null,null,null,null,null]::float8[]
));

或演员表可以表示为

cast(array[null,null,null,null,null] as double precision[])