1

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

情况1:

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

案例二:

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”是双精度类型,但表达式是文本类型第 1 行:INSERT INTO schema.table (column_name) VALUES (unnest(array[nu... ^ 提示:您需要重写或转换表达式.

我应该如何重写案例 3 以将未嵌套的空值数组重新转换为可以插入双精度(或任何数字)列中的东西?

4

1 回答 1

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[])
于 2013-02-05T17:32:05.150 回答