假设我在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,将未经验证的空值数组重新转换为可以插入双精度(或任何数字)列的内容?
答案 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[])