Postgres - Как проверить наличие пустого массива - PullRequest
54 голосов
/ 10 апреля 2009

Я использую Postgres и пытаюсь написать запрос, подобный этому:

select count(*) from table where datasets = ARRAY[]

т.е. Я хочу знать, сколько строк содержит пустой массив для определенного столбца, но postgres это не нравится:

select count(*) from super_eds where datasets = ARRAY[];
ERROR:  syntax error at or near "]"
LINE 1: select count(*) from super_eds where datasets = ARRAY[];
                                                             ^

Ответы [ 4 ]

77 голосов
/ 10 апреля 2009

Синтаксис должен быть:

SELECT
     COUNT(*)
FROM
     table
WHERE
     datasets = '{}'

Вы используете кавычки и фигурные скобки для отображения литералов массива.

15 голосов
/ 10 апреля 2009

Вы можете использовать тот факт, что функции array_upper и array_lower для пустых массивов возвращают ноль так что вы можете:

select count(*) from table where array_upper(datasets, 1) is null;
2 голосов
/ 09 марта 2017
Solution Query:
select id, name, employee_id from table where array_column = ARRAY[NULL]::array_datatype;
Example:

table_emp:

id (int)| name (character varying) | (employee_id) (uuid[])
1       | john doe                 | {4f1fabcd-aaaa-bbbb-cccc-f701cebfabcd, 2345a3e3-xxxx-yyyy-zzzz-f69d6e2edddd }
2       | jane doe                 | {NULL}


select id, name, employee_id from tab_emp where employee_id = ARRAY[NULL]::uuid[];

    -------
2       | jane doe                 | {NULL}
0 голосов
/ 10 апреля 2009
SELECT  COUNT(*)
FROM    table
WHERE   datasets = ARRAY(SELECT 1 WHERE FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...