sql >> データベース >  >> RDS >> Mysql

最強のLIKEでSQLを注文しますか?

    col_1がcol_2などよりも関連性が高いことを意味する場合は、:

    select *
          ,case when col_1 like '%$keyword%' then 1
                when col_2 like '%$keyword%' then 2
                when col_3 like '%$keyword%' then 3
           end as [priority]
      from table_name
     where col_1 like '%$keyword%'
        or col_2 like '%$keyword%'
        or col_3 like '%$keyword%'
     order by [priority]
    

    最も多くの列が一致することを意味する場合:

    select *
          ,(case when col_1 like '%$keyword%' then 1 else 0 end) +
          ,(case when col_2 like '%$keyword%' then 1 else 0 end) +
          ,(case when col_3 like '%$keyword%' then 1 else 0 end) as [priority]
      from table_name
     where col_1 like '%$keyword%'
        or col_2 like '%$keyword%'
        or col_3 like '%$keyword%'
     order by [priority] desc
    


    1. 製品属性のデータベーススキーマ

    2. SQLでORDERBY句を使用する方法は?

    3. DATETIME形式の値に1日を追加

    4. ZendFramework2でのMySQLストアドプロシージャ出力へのアクセス