LoginSignup
0
0

More than 5 years have passed since last update.

MYSQLで部分一致順にソートして取得

Last updated at Posted at 2018-11-20

テーブルから複数の部分一致で取得し、かつ入力された条件順に表示する方法

LIKEがWHERE以降で利用できないっぽかったのでどうしたもんかと思ってたら
ずばりここにあった
Mysql: Order by like?

// 検索ワード複数入力時は入力順に表示する
$words = ['hoge','fuga'];
$order = " ORDER BY CASE ";
$no = 0;
$last = count($words) - 1;
foreach ($words as $word) {
    $order .= " WHEN word LIKE '%".$word."%' THEN ".($no+1);
    if ($last == $no) {
        // 最終処理
        $order .= " END";
    }
    $no++;
}
dump($order);
ORDER BY 
  CASE WHEN word LIKE '%hoge%' THEN 1 
       WHEN word LIKE '%fuga%' THEN 2 END

bindしろよとかいろいろあるけど直接SQL発行している分はとりあえずこれで乗り切れそう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0