Operator nicht vorhanden: json = json
wenn ich versuche zu wählen Datensatz aus einer Tabelle
SELECT * FROM movie_test WHERE tags = ('["dramatic","women", "political"]'::json)
Den sql-code werfen einen Fehler
LINE 1: SELECT * FROM movie_test WHERE tags = ('["dramatic","women",...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
********** 错误 **********
ERROR: operator does not exist: json = json
SQL 状态: 42883
指导建议:No operator matches the given name and argument type(s). You might need to add explicit type casts.
字符:37
Hab ich was verpasst oder wo erfahre ich etwas über diesen Fehler.
InformationsquelleAutor Isaac | 2015-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht vergleichen json-Werte. Sie können vergleichen, die text-Werte statt:
Beachten Sie jedoch, dass die Werte des Typs
json
die als text gespeichert sind, in einem format, in dem Sie gegeben sind. Deshalb wird das Ergebnis des Vergleichs hängt davon ab, ob Sie durchgängig das gleiche format:In Postgres 9.4+ Sie können dieses problem beheben, indem Typ
jsonb
gespeichert wird zerlegt in einem binären format. Werte dieses Typs können miteinander verglichen werden:also diese Abfrage ist sehr viel sicherer:
Lesen Sie mehr über JSON-Typen.
Vielen Dank, Es ist wirklich hilfreich für mich !
Danke!!! In Fall ist es hilfreich, jemand
List.where("nutrition_constraints::jsonb -> 'vegetarian' ? '1'").first
.InformationsquelleAutor klin