2016-10-24 1 views
0

Моя колонка выглядит что-то вроде этогоПоиск ГДЕ значение присутствует в один из массива JSON, используя только регулярное выражение

"{"a1":"{\"name\":[{\"id\":32,\"addId\":[28947,33268,48148,1594,57818,57819],\"hasPhone\":true}],\"phone\":[{\"phoneId\":5,\"selectionMode\":true}],\"phoneType\":[1],\"selectionMode\":\"GROUP\"}"}" 

Это поле JSON, но мы все еще на Postgres 9.2, так что нет поддержки JSON для поиск.

Я должен получить все записи, где ADDID либо 28947 или 57818

Пожалуйста, помогите

+0

Это не является допустимым JSON документ –

ответ

0

Вот регулярное выражение, которое соответствует addId\":[ с последующим любым количеством , и десятичных цифр с вашими магическими числами в средний, заканчивается на ].

SELECT regexp_matches(json_column, 'addId\\":\[[0-9,]*(28947|57818)[0-9,]*\]', 'g'); 

тестировал на входных данных в this site. Не проверить его с фактической regexp_matches функции

+0

Извините за не отметить, что, но это 5 цифра Id также может присутствовать и в других местах, я хотел искать в ADDID массив в JSON – Pratik

+0

хорошо @ Пратик, я отредактировал его. Протестировал его на ваших входных данных на [этом сайте] (https://regex101.com/). Не тестировал с помощью функции regex sql – tenCupMaximum

Смежные вопросы