Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql select Abfrage innerhalb eines serialisierten Arrays

Wie GWW in den Kommentaren sagt, wenn Sie Dinge auf diese Weise abfragen müssen, sollten Sie wirklich in Betracht ziehen, diese Daten als etwas anderes als einen Big-Ole-String zu speichern (was Ihr serialisiertes Array ist).

Wenn das nicht möglich ist (oder Sie einfach nur faul sind), können Sie die Tatsache nutzen, dass das serialisierte Array nur ein Big-Ole-String ist, und eine LIKE-Klausel finden, um übereinstimmende Datensätze zu finden. Die Art und Weise, wie PHP Daten serialisiert, ist ziemlich einfach herauszufinden (Tipp:Diese Zahlen geben die Länge von Dingen an).

Wenn Ihr serialisiertes Array ziemlich komplex ist, wird dies schnell zusammenbrechen. Aber wenn es sich um ein flaches Array handelt, sollten Sie es tun können.

Natürlich werden Sie LIKE '%...%' verwenden, also erhalten Sie keine Hilfe von irgendwelchen Indizes und die Leistung wird sehr schlecht sein.

Aus diesem Grund schlagen die Leute vor, diese Daten auf normalisierte Weise zu speichern, wenn Sie sie "innerhalb" abfragen müssen.