sql >> Database teknologi >  >> RDS >> Mysql

Bestil SQL efter stærkeste LIKE?

Hvis du mener, at col_1 er mere relevant end col_2 og så videre, så :

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]

Hvis du mente med flest kolonnematch, så :

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. PostgreSQL -skal vises i GROUP BY-sætningen eller bruges i en aggregeret funktion

  2. Tuning:Et godt sted at starte

  3. Fordelene ved PostgreSQL

  4. Hvordan REVERSE() virker i MariaDB