1

postgresqlテーブルに倍精度の列があり、次のINSERTを試してみてください

ケース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"は倍精度型ですが、式はテキスト型です行1:INSERT INTO schema.table(column_name)VALUES(unnest(array [nu ... ^ヒント:式を書き直すかキャストする必要があります。

ネストされていないnull値の配列を倍精度(または任意の数値)列に挿入できるものに再キャストするには、ケース3をどのように書き直す必要がありますか?

4

1 に答える 1

1

null値の配列を倍精度[]または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 に答える