संक्षेप में - JSON के बजाय JSONB का उपयोग करें या JSON को JSONB में डालें।
आप json मानों की तुलना नहीं कर सकते। आप इसके बजाय टेक्स्ट मानों की तुलना कर सकते हैं:
SELECT *
FROM movie_test
WHERE tags::text = '["dramatic","women","political"]'
ध्यान दें कि JSON प्रकार के मान टेक्स्ट के रूप में उस प्रारूप में संग्रहीत किए जाते हैं जिसमें वे दिए गए हैं। इस प्रकार तुलना का परिणाम इस बात पर निर्भर करता है कि क्या आप लगातार एक ही प्रारूप को लागू करते हैं:
SELECT
'["dramatic" ,"women", "political"]'::json::text =
'["dramatic","women","political"]'::json::text -- yields false!
Postgres 9.4+ में आप JSONB प्रकार का उपयोग करके इस समस्या को हल कर सकते हैं, जो एक विघटित बाइनरी प्रारूप में संग्रहीत है। इस प्रकार के मूल्यों की तुलना की जा सकती है:
SELECT
'["dramatic" ,"women", "political"]'::jsonb =
'["dramatic","women","political"]'::jsonb -- yields true
इसलिए यह क्वेरी अधिक विश्वसनीय है:
SELECT *
FROM movie_test
WHERE tags::jsonb = '["dramatic","women","political"]'::jsonb
JSON प्रकारों के बारे में और पढ़ें।