usa le parentesi ()
. Sembra che il compilatore tenti di vederlo come details->('email' IS NOT NULL)
. Quindi puoi risolverlo in questo modo:
select *
from users
where (details->'email') is not null
sql fiddle demo
in realtà, per ottenere record in cui dettagli["email"] è nullo o la chiave e-mail non esiste , puoi utilizzare questa query:
select *
from users
where (details->>'email') is null
come descritto in questa risposta.