私はMySQLデータベース内に2つのフィールドを持っています。データ型は、(DC2Type:array)のCommentを持つLONGTEXTとして表示されます。例えばデータベースアレイの値(整数または文字列)の検索
、このフィールドに格納された整数値は、次のようになります。 a:4:{i:0;i:9;i:1;i:10;i:2;i:11;i:3;i:12;}
と文字列値は、次のようになります。 a:2:{i:0;s:6:"Value1";i:1;s:6:"Value2";}
私は、これらのフィールドにこの方法が必要ですので、私フィルタリング可能な列を格納できます。例えば。第1のものは年齢グループであるので、9,10,11,12歳が表される。
その後、私は10と11
私はINとFIND_IN_SET構文を試みたが、いずれでもないきなものを見つけたいと言う10歳のためか、いくつかのケースでは関連があると言うすべてのレコードを取得する必要があります私のクエリ結果を返します。 IN
FIND_IN_SET
SELECT *
FROM table_name
WHERE FIND_IN_SET(MyField,'Value1') > 0;
を使用して
SELECT *
FROM table_name
WHERE MyField IN (10)
を使用して
私は配列は、おそらくに値を格納するための最良の場ではありません知っているが、私は、各AgeGroup例えばのための別々のフィールドを持っている必要はありませんでした年齢1、年齢2など、各カテゴリ(例:Value1、Value2など)
データベース配列フィールドからの値や値の検索方法について考えてください。
ありがとうございます!
このデータはPHPの 'serialize()'形式です。 MySQLで直接処理する簡単な方法はありません。すべてのレコードを取得し、 'unserialize()'を使ってそれをテストする必要があります。 – Barmar
'FIND_IN_SET'はコンマ区切りの値でのみ動作します。あなたのフィールドの値は ';'ではなく ';'で区切られています。 – Barmar