Ich versuche das:
select * from "User" where "partnerData" -> 'name'!= NULL
partnerDataist ein JSONB. Ich würde diese Zeilen sehen, hat das nameFeld nicht in JSON.
Lösung des Problems
Sie können <>(oder !=oder einen anderen Operator) nicht verwenden, um nach NULL-Werten zu suchen, Sie müssen verwenden IS NULL. Using ->gibt auch einen jsonbWert zurück, der möglicherweise das Literal und nullnicht der SQL- NULLWert ist. Sie sollten also verwenden ->>, um einen Textwert zurückzugeben (der dann ein SQL NULL wäre).
select *
from "User"
where "partnerData" ->> 'name' IS NULL
Beachten Sie, dass hier nicht zwischen einem JSON-Wert, der den Schlüssel enthält, nameaber mit einem Wert von NULL und einem JSON-Wert, der den Schlüssel überhaupt nicht enthält, unterschieden wird.
Wenn Sie nur prüfen möchten, ob der Schlüssel existiert (unabhängig vom Wert – auch wenn es sich um eine JSON-Null handelt), verwenden Sie den ?Operator.
where "partnerData"? 'name'
Keine Kommentare:
Kommentar veröffentlichen