В Postgres все ваши выражения допустимы, за исключением последнего: '{null,}'
, что приведет к ошибке:
литерал некорректного массива: "{null,}"
Стоит также отметить, что существует разница между null
(и неопределенным значением) и {}
(пустой массив). Допустим, вы хотите, чтобы запись в столбец имела ограничение not null
, null
не удастся, а {}
будет разрешено.
Демонстрация на DB Fiddle :
-- create the table
create table t (array_field int[])
-- insert values
insert into t values
('{1,2,3}'),
('{3,4,5}'),
('{null,2,3,4}'),
(null),
('{}')
;
-- 5 rows affected
-- won't work
insert into t values ('{null,}');
-- ERROR: malformed array literal: "{null,}"
-- LINE 1: insert into t values ('{null,}')
-- ^
-- DETAIL: Unexpected "}" character.
-- check the results
select array_field, array_length(array_field, 1) from t
array_field | array_length
:----------- | -----------:
{1,2,3} | 3
{3,4,5} | 3
{NULL,2,3,4} | 4
<em>null</em> | <em>null</em>
{} | <em>null</em>