シリアル化された配列内の項目に基づいて MySQL レコードをフィルターするにはどうすればよいですか?

DDD
リリース: 2024-11-07 16:54:03
オリジナル
573 人が閲覧しました

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

シリアル化された配列フィルタリングを使用した MySQL クエリ

MySQL データベースでは、シリアル化された配列内の特定の項目に基づいてレコードを取得する必要がある場合があります。フィールドに格納される配列。ただし、シリアル化された配列内の項目の直接比較は SQL 言語ではサポートされていません。

それでも、この課題に対処するには 2 つのアプローチが考えられます:

文字列としてシリアル化された配列

シリアル化された配列は本質的に文字列であるため、LIKE 句を利用してレコードを照合して選択できます。例:

SELECT * FROM table WHERE (an item in my array) LIKE '%$n%'
ログイン後にコピー

このアプローチでは、PHP の unserialize() 関数を使用してシリアル化された配列を文字列に再構築し、配列にインデックスを付けて目的の項目を確認し、serialize() で再シリアル化します。 .

データベースの正規化

頻繁なクエリでシリアル化された配列内の個々の項目にアクセスする必要がある場合は、各項目を別個の行として保存してデータ構造を正規化することを強くお勧めします。関連テーブル内。これにより、潜在的に複雑な文字列解析や LIKE 操作が不要になるため、パフォーマンスとクエリの柔軟性が大幅に向上します。

以上がシリアル化された配列内の項目に基づいて MySQL レコードをフィルターするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート