строк, в каждой строке есть текстовое поле в которой лежит json, в json'е лежит массив объектов
задача: отобрать строки у которых в текстовом поле лежит определенный объект в одном из элементов массива
- ilike нельзя (производительность, в массиве может быть несколько искомых объектов и нужна возможность 'IN' или ?| )
- https://dbfiddle.uk/?rdbms=postgres_12&fiddle=2ab7150519de9da9449ed2eb4601e012 - похожая задача, но там один объект,а не строки
Насчёт производительности было смешно, спасибо. Нет, никакой проблемы для этой задачи с производительностью быть не можэт. По разным причинам, но в первую очередь потому, что чтобы там была высокая производительность — надо перестать ТАК формулировать задачу. А вот аргумент про устоявшыйся синтаксис и всякие false positives — это вполне аргумент. Чтобы найти что-то в json-объекте средствами сервера постгрес _ требуется на сервере распарзить json, и затем в получившыхся данных найти то, что требуется. К счастью, вполне пристойный парзер json и комплект обёрток для поиска в результатах и модификацыи есть в комплекте postgresql: https://www.postgresql.org/docs/current/functions-json.html , можэте ими воспользоваться.
Обсуждают сегодня