Erik Rijkers <e...@xs4all.nl> writes: > Hi, > > Comparison of 2 values of type jsonb is allowed. > > Comparison of 2 values of type json gives an error. > > That seems like an oversight -- or is it deliberate?
This is because json is just a textual representation, and different JSON strings can be semantically equal because e.g. whitespace and object key order is not significant. > Example: > > select '42'::json = '{}'::json; > --> ERROR: operator does not exist: json = json > > (of course, easily 'solved' by casting but that's not really the > point) To do a proper comparison you have to parse it into a semantic form, which is what casting to jsonb does. > Thanks, > > Erik Rijkers - ilmari