Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh menapis rekod MySQL berdasarkan item dalam tatasusunan bersiri?

Bagaimanakah saya boleh menapis rekod MySQL berdasarkan item dalam tatasusunan bersiri?

DDD
DDDasal
2024-11-07 16:54:03615semak imbas

How can I filter MySQL records based on an item within a serialized array?

MySQL Query dengan Serialized Array Filtration

Dalam pangkalan data MySQL, mungkin perlu untuk mendapatkan semula rekod berdasarkan item tertentu dalam bersiri tatasusunan yang disimpan dalam medan. Walau bagaimanapun, perbandingan item langsung dalam tatasusunan bersiri tidak disokong oleh bahasa SQL.

Walau bagaimanapun, terdapat dua pendekatan yang berpotensi untuk menangani cabaran ini:

Array Bersiri sebagai Rentetan

Memandangkan tatasusunan bersiri pada asasnya ialah rentetan, anda boleh memanfaatkan klausa LIKE untuk memadankan dan memilih rekod. Contohnya:

SELECT * FROM table WHERE (an item in my array) LIKE '%$n%'

Pendekatan ini melibatkan membina semula tatasusunan bersiri menjadi rentetan menggunakan fungsi unserialize() PHP, mengindeks ke dalam tatasusunan untuk menyemak item yang dikehendaki, dan kemudian mensirikannya semula dengan serialize() .

Penormalan Pangkalan Data

Jika pertanyaan kerap memerlukan mengakses item individu dalam tatasusunan bersiri, adalah sangat disyorkan untuk menormalkan struktur data dengan menyimpan setiap item sebagai baris yang berasingan dalam jadual yang berkaitan. Ini memberikan prestasi yang lebih baik dan fleksibiliti pertanyaan, kerana ia menghapuskan keperluan untuk penghuraian rentetan yang berpotensi kompleks dan operasi LIKE.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menapis rekod MySQL berdasarkan item dalam tatasusunan bersiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn