sql >> Databasteknik >  >> RDS >> Mysql

Beställa SQL efter starkaste LIKE?

Om du menar att col_1 är mer relevant än col_2 och så vidare, då:

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]

Om du menade med flest kolumnmatchning 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. Hur ClusterControl konfigurerar virtuell IP och vad du kan förvänta dig under failover

  2. Hur du hanterar din databas med Adminer

  3. SQL Server 2016:Skapa en tabell från ett SQL-skript

  4. Canonical Function EntityFunctions.TruncateTime finns inte i MYSQL