Извлечение значений из сериализованного массива php в postgresql

#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