Kort sagt - brug JSONB i stedet for JSON eller cast JSON til JSONB.
Du kan ikke sammenligne json-værdier. Du kan sammenligne tekstværdier i stedet:
SELECT *
FROM movie_test
WHERE tags::text = '["dramatic","women","political"]'
Bemærk dog, at værdier af typen JSON gemmes som tekst i et format, som de er angivet i. Resultatet af sammenligning afhænger således af, om du konsekvent anvender det samme format:
SELECT
'["dramatic" ,"women", "political"]'::json::text =
'["dramatic","women","political"]'::json::text -- yields false!
I Postgres 9.4+ kan du løse dette problem ved at bruge typen JSONB, som er gemt i et dekomponeret binært format. Værdier af denne type kan sammenlignes:
SELECT
'["dramatic" ,"women", "political"]'::jsonb =
'["dramatic","women","political"]'::jsonb -- yields true
så denne forespørgsel er meget mere pålidelig:
SELECT *
FROM movie_test
WHERE tags::jsonb = '["dramatic","women","political"]'::jsonb
Læs mere om JSON-typer.