2016-09-28 8 views
5

मैं postgres के साथ प्रयोग कर रहा हूँ jsonb स्तंभ प्रकार, और अब तक तो अच्छा। एक आम क्वेरी मैं उपयोग कर रहा हूँ इस तरह है:Postgres jsonb 'नहीं होता है' ऑपरेटर

select count(*) from jsonbtest WHERE attributes @> '{"City":"Mesa"}'; 

कैसे मुझे लगता है कि रिवर्स करते हैं? क्या कोई अलग ऑपरेटर है या इसका उपयोग

select count(*) from jsonbtest WHERE NOT attributes @> '{"City":"Mesa"}'; 
+3

नहीं, उस के लिए कोई समर्पित ऑपरेटर है। 'नहीं' के साथ क्या गलत है? – redneb

+0

@redneb समस्या यह है कि 'नहीं' बस काम नहीं करता है। 'विशेषताओं - >>' शहर '<>' मेसा 'फॉर्मूलेशन का उपयोग करना भी काम नहीं करता है। – eykanal

+0

@eykanal 'NOT' [बहुत अच्छी तरह से काम करता है] (http://rextester.com/TMGVQZ95259)। – pozs

उत्तर

1

के रूप में किया जाता है, यह कई स्थितियों के साथ हासिल किया जा सकता है। यह सुरुचिपूर्ण नहीं है लेकिन मुझे ऐसा करने का कोई और तरीका नहीं मिला।

तो, सबसे पहले, प्रत्येक पंक्ति को प्राप्त करें जिसमें सरल 'सिटी' विशेषता नहीं है और फिर सही फ़ील्ड मान की जांच करने के लिए 'OR' स्थिति जोड़ें।

select count(*) from jsonbtest where 
    NOT(attributes ? 'City') 
    OR (attributes ? 'City') is NULL -- this is required if attributes can be null 
    OR (attributes->>'City' != 'Mesa')) 
0

आप ऑपरेटर <@ उपयोग कर सकते हैं इस खोज करेंगे जहां 'सिटी' नहीं है 'मेसा'

select count(*) from jsonbtest WHERE attributes <@ '{"City":"Mesa"}'; 
संबंधित मुद्दे