Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
-- Create a table with JSONB CREATE TABLE events ( id BIGSERIAL PRIMARY KEY, event_type TEXT NOT NULL, payload JSONB NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() ); -- Insert JSONB data INSERT INTO events (event_type, payload) VALUES ('purchase', '{"userId":1,"items":[{"sku":"KB1","qty":2},{"sku":"M2","qty":1}],"total":159.97}'), ('signup', '{"userId":2,"email":"bob@example.com","referral":"google"}'); -- -> and ->> operators SELECT payload -> 'userId' AS user_id_json, -- 1 (JSONB number) payload ->> 'userId' AS user_id_text, -- '1' (text) payload -> 'items' -> 0 ->> 'sku' AS first_sku -- 'KB1' FROM events WHERE event_type = 'purchase'; -- @> containment — find purchases by userId 1 SELECT * FROM events WHERE event_type = 'purchase' AND payload @> '{"userId": 1}'; -- ? key existence SELECT * FROM events WHERE payload ? 'referral'; -- GIN index for fast JSONB queries CREATE INDEX idx_events_payload ON events USING GIN (payload); -- jsonb_each — expand JSONB object to key-value rows SELECT key, value FROM jsonb_each('{"a":1,"b":2,"c":3}'); -- jsonb_array_elements — expand JSONB array to rows SELECT elem FROM jsonb_array_elements('[1,2,3,4,5]'::jsonb) AS t(elem);
Result
Open