• 締切済み

シリアライズされた値に対するカラムへの検索方法

PHPを使ってMysqlDBに入っている値を取得して表示する 表示面のプログラムを作成しております。 下記のようなシリアライズされた値が保管されている項目に対しての 検索条件の記述を現在はLikeを使っております。 FIND_IN_SETのような検索用の関数はございませんでしょうか。 ●検索対象 1269、1260、1254、84 ●シリアライズされた値サンプル a:4:{i:0;s:4:"1269";i:1;s:4:"1260";i:2;s:4:"1254";i:3;s:2:"84";} ●Likeの記述 カラム名 Like "%\"1260\"%" ご教授のほど、よろしくお願いします。

みんなの回答

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

簡単なのはないです。強引に関数組み合わせで行ったとして、likeより速いとも思えないけど FIND_IN_SET( concat('s:',length( cast(:num as char)),':"',cast(:num as char),'"'), replace( ';', ',' , カラム名) )  :num をプレースホルダーとして検索値を代入  concat の部分は、先にphp で文字列作って、プレースホルダーで入れてしまうのもあり

toema
質問者

お礼

ご回答ありがとうございます。 参考にいたします。

関連するQ&A