#php #regex #postgresql
#php #регулярное выражение #postgresql
Вопрос:
Проблема:
один столбец таблицы содержит сериализованные массивы php. я хотел бы извлечь значения этой сериализованной структуры данных без использования php. для получения этих значений мне понадобится оператор postgres sql.
Пример:
вот часть сериализованной структуры данных, которая мне понадобится (выделенная жирным шрифтом часть):
… s: 12: «SearchtermID»;s: 4: «1008«; ….
Спасибо!
Комментарии:
1. Взгляните сюда
2. для json это будет здорово, для сериализованной строки php не так здорово 🙂
Ответ №1:
Это будет работать в вашем примере:
SELECT substring('... s:12:"SearchtermID";s:4:"1008"; ....', 's:4:"([0-9] )"');
Смотрите руководство здесь и здесь .
Возможно, вы захотите предоставить более подробную информацию …
Комментарии:
1. спасибо 🙂 это правильный путь, для моего случая эта адаптация работает сейчас. необходимо имя сериализованного поля, чтобы отфильтровать правильное значение.
select substring(db-fieldname from E'"php-fieldname";s:\d :"(\d )"') from db-tablename
Ответ №2:
Это мое решение:
select substring((regexp_matches(db_fieldname,'("d ")','g'))[1] from '"(d )"') from db_tablename