#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
сокращенно, но ваш лучший друг-стандартный способ SQLIS NULL
.
Ответ №2:
вы ищете значение NULL.