GOOGLE ADS

Montag, 25. April 2022

Wie überprüfe ich, ob JSONB ein Feld im Stammverzeichnis hat?

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

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...