пустой массив postgresql

#sql #postgresql

Вопрос:

У меня есть следующая таблица в PostgreSQL:

    Column    |          Type          |                         Modifiers
------------- ------------------------ -----------------------------------------------------------
 description | text                   | not null
 sec_r       | integer[]              |
 

В моих двух массивах целых sec_r чисел есть некоторые поля, которые имеют «нулевые» значения, но я предполагаю, что это не ноль?

Всякий раз, когда я пытаюсь select * from this table where sec_r = null , я получаю 0 строк.

 |  description     |  sec_r  |
 ------------------ --------- 
| foo bar foo bar  |         |
| foo bar foo bar  | {1,2,3} |
| foo bar foo bar  |         |
| foo bar foo bar  | {9,5,1} |
(4 rows)
 

Однако выполнение select * из таблицы, где 1 = ANY (sec_r) возвращает правильные строки.

Как выбрать строки, в которых массив пуст?

Ответ №1:

Вы должны использовать IS NULL , а не = NULL в SQL.

Попробуй:

 SELECT * FROM the_table WHERE sec_r IS NULL
 

Комментарии:

1. Гений. Ха-ха-ха, хорошо, я приму это в 11-минутный тайм-аут.

2. Вы также можете включить свойство transform_null_equals, поэтому sec_r = null оно будет рассматриваться как sec_r IS NULL или использоваться ISNULL сокращенно, но ваш лучший друг-стандартный способ SQL IS NULL .

Ответ №2:

вы ищете значение NULL.