I created a table which contains a column of string ARRAY type as:
CREATE TABLE test
(
id integer NOT NULL,
list text[] COLLATE pg_catalog."default",
CONSTRAINT test_pkey PRIMARY KEY (id)
)
I then added rows which contain various values for that array, including an empty array and missing data (null):
insert into test (id, list) values (1, array['one', 'two', 'three']); insert into test (id, list) values (2, array['four']); insert into test (id, list) values (3, array['']); insert into test (id, list) values (4, array[]::text[]); // empty array insert into test (id, list) values (5, null); // missing value
pgAdmin shows table like this:
I am trying to get a row which contains a null value ([null]) in the list column but:
select * from test where list = null;
…returns no rows and:
select * from test where list = '{}';
…returns row with id = 4.
How to write WHERE clause which would target NULL value for column of ARRAY type?
Advertisement
Answer
... WHERE list IS NULL