こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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\"%"

ご教授のほど、よろしくお願いします。

投稿日時 - 2015-11-14 06:54:30

QNo.9079970

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

簡単なのはないです。強引に関数組み合わせで行ったとして、likeより速いとも思えないけど

FIND_IN_SET( concat('s:',length( cast(:num as char)),':"',cast(:num as char),'"'), replace( ';', ',' , カラム名) )

 :num をプレースホルダーとして検索値を代入
 concat の部分は、先にphp で文字列作って、プレースホルダーで入れてしまうのもあり

投稿日時 - 2015-11-18 13:35:26

あなたにオススメの質問