I try this:
select * from "User" where "partnerData" -> 'name' != NULL
partnerData
is a JSONB. I would see those rows, does not have the name
field in JSON.
CodePudding user response:
You can't use <>
(or !=
or any other operator) to check for NULL values, you need to use IS NULL
. Using ->
also returns a jsonb
value which might be the literal null
not the SQL NULL
value. So you should use ->>
to return a text value (which would then be a SQL NULL)
select *
from "User"
where "partnerData" ->> 'name' IS NULL
Note that this doesn't distinguish between a JSON value that contains the key name
but with a value of NULL and a JSON value that does not contain the key at all.
If you only want to check if the key exists (regardless of the value - even if it's a JSON null), use the ?
operator.
where "partnerData" ? 'name'