PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

ऑपरेटर मौजूद नहीं है:json =json

संक्षेप में - 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 प्रकारों के बारे में और पढ़ें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 1=1 पर शामिल हों (चुनें ...)?

  2. MySQLers के लिए PostgreSQL प्रशिक्षण

  3. डॉकर्स के साथ नोडजेएस पर पोस्टग्रेज के लिए ECONNREFUSED

  4. पोस्टग्रेज फ्रंट-एंड में एक टैब कैसे निर्दिष्ट करें COPY

  5. धाराप्रवाह NHibernate और PostgreSQL, SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException:निर्दिष्ट विधि समर्थित नहीं है