Я ищу поиск в базе данных по сериализованным данным. В настоящее время я использую Symfony2 в качестве моей платформы, создающей вызовы pdo_mysql с использованием Doctrine 2. То, что я хотел бы сделать, это создать запрос, который использует REGEXP для поиска данных в пределах certian-части массива. Данные, которые я пытаюсь найти в выглядит следующим образом: -Регулярное выражение в сериализованных данных
a:1:{s:8:"bedrooms";a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;s:2:"5+";}}
Так скажем, я ищу запись, которая имеет 3 спальни, то я хотел бы его найти: -
i:2;i:3
До сих пор я задал вопрос: -
SELECT * FROM table WHERE field_name REGEXP '.*"bedrooms"; a:[0-9]+:{i:[0-9]+;i:3;}.*';
Однако это не сработает. Может кто-нибудь помочь мне найти исправление вокруг этого, пожалуйста? Я думаю, что дело доходит до того, как написано регулярное выражение.
Также стоит отметить, что существуют другие массивы, хранящиеся в поле, такие кредитные лимиты и другие данные.
Заранее спасибо.
Как насчет того, чтобы не сериализовать ее в первую очередь? – Sammitch
Это не единственные данные, хранящиеся в сериализованных данных. Есть еще много параметров, которые также хранятся, и поэтому я использовал сериализованные данные. –
Если вы никогда не планируете его запрашивать, обязательно внесите в себ черту. Однако, если вы * можете * когда-либо захотеть запросить * что-либо * в * нормальном режиме, вы не должны сериализовать его. Похоже, это могут быть данные MLS, и я получаю, что данные RETS - это мешок с кошками, но SQL - очень плохой выбор для хранения денормализованных данных. – Sammitch