jsonb find to array
структура json
[{"to": 5, "from": 1, "country": 1}, {"to": 11, "from": 6, "country": 2}, {"to": 20, "from": 12, "country": 3}]
SELECT column_json::jsonb FROM table WHERE column_json::jsonb ....;
подскажите, что написать в WHERE если мне надо вытащить country='1' и '3' BETWEEN column_json.from AND column_json.to
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
SELECT test.id, parsed.element
FROM test
CROSS JOIN jsonb_array_elements(data) AS parsed (element)
WHERE jsonb_extract_path(parsed.element, 'country')::INT = 1
AND 3 BETWEEN jsonb_extract_path(parsed.element, 'from')::INT
AND jsonb_extract_path(parsed.element, 'to')::INT
https://dbfiddle.uk/?rdbms=postgres_12&fiddle=5c374bb942641b5db68a32267e3739a3
Если поле имеет тип, отличный от JSONB - используйте JSON-версии функций или явно приводите тип.