|
|
|
|
@ -267,30 +267,30 @@ SELECT '{"reading": 1.230e-5}'::json, '{"reading": 1.230e-5}'::jsonb; |
|
|
|
|
</para> |
|
|
|
|
<programlisting> |
|
|
|
|
-- Simple scalar/primitive values contain only the identical value: |
|
|
|
|
SELECT '"foo"'::jsonb @> '"foo"'::jsonb; |
|
|
|
|
SELECT '"foo"'::jsonb @> '"foo"'::jsonb; |
|
|
|
|
|
|
|
|
|
-- The array on the right side is contained within the one on the left: |
|
|
|
|
SELECT '[1, 2, 3]'::jsonb @> '[1, 3]'::jsonb; |
|
|
|
|
SELECT '[1, 2, 3]'::jsonb @> '[1, 3]'::jsonb; |
|
|
|
|
|
|
|
|
|
-- Order of array elements is not significant, so this is also true: |
|
|
|
|
SELECT '[1, 2, 3]'::jsonb @> '[3, 1]'::jsonb; |
|
|
|
|
SELECT '[1, 2, 3]'::jsonb @> '[3, 1]'::jsonb; |
|
|
|
|
|
|
|
|
|
-- Duplicate array elements don't matter either: |
|
|
|
|
SELECT '[1, 2, 3]'::jsonb @> '[1, 2, 2]'::jsonb; |
|
|
|
|
SELECT '[1, 2, 3]'::jsonb @> '[1, 2, 2]'::jsonb; |
|
|
|
|
|
|
|
|
|
-- The object with a single pair on the right side is contained |
|
|
|
|
-- within the object on the left side: |
|
|
|
|
SELECT '{"product": "PostgreSQL", "version": 9.4, "jsonb":true}'::jsonb @> '{"version":9.4}'::jsonb; |
|
|
|
|
SELECT '{"product": "PostgreSQL", "version": 9.4, "jsonb":true}'::jsonb @> '{"version":9.4}'::jsonb; |
|
|
|
|
|
|
|
|
|
-- The array on the right side is <emphasis>not</> considered contained within the |
|
|
|
|
-- array on the left, even though a similar array is nested within it: |
|
|
|
|
SELECT '[1, 2, [1, 3]]'::jsonb @> '[1, 3]'::jsonb; -- yields false |
|
|
|
|
SELECT '[1, 2, [1, 3]]'::jsonb @> '[1, 3]'::jsonb; -- yields false |
|
|
|
|
|
|
|
|
|
-- But with a layer of nesting, it is contained: |
|
|
|
|
SELECT '[1, 2, [1, 3]]'::jsonb @> '[[1, 3]]'::jsonb; |
|
|
|
|
SELECT '[1, 2, [1, 3]]'::jsonb @> '[[1, 3]]'::jsonb; |
|
|
|
|
|
|
|
|
|
-- Similarly, containment is not reported here: |
|
|
|
|
SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"bar": "baz"}'::jsonb; -- yields false |
|
|
|
|
SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"bar": "baz"}'::jsonb; -- yields false |
|
|
|
|
</programlisting> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
@ -309,10 +309,10 @@ SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"bar": "baz"}'::jsonb; -- yields f |
|
|
|
|
</para> |
|
|
|
|
<programlisting> |
|
|
|
|
-- This array contains the primitive string value: |
|
|
|
|
SELECT '["foo", "bar"]'::jsonb @> '"bar"'::jsonb; |
|
|
|
|
SELECT '["foo", "bar"]'::jsonb @> '"bar"'::jsonb; |
|
|
|
|
|
|
|
|
|
-- This exception is not reciprocal -- non-containment is reported here: |
|
|
|
|
SELECT '"bar"'::jsonb @> '["bar"]'::jsonb; -- yields false |
|
|
|
|
SELECT '"bar"'::jsonb @> '["bar"]'::jsonb; -- yields false |
|
|
|
|
</programlisting> |
|
|
|
|
|
|
|
|
|
<para> |
|
|
|
|
|