sql >> Databasteknik >  >> RDS >> Mysql

Hitta närmaste matchande strängar och dess delsträngar med hjälp av SQL-fråga

En metod är att använda like i order by :

order by (case when name like 'ATUL%' then 1
               when name like 'ATU%' then 2
               when name like 'AT%' then 3
               when name like 'A%' then 4
               else 5
          end)

En mer generisk metod är också brute force, men kan gå ungefär så här:

order by (case when left(name, 9) = left('ATUL', 9) then 1
               when left(name, 8) = left('ATUL', 8) then 2
               when left(name, 7) = left('ATUL', 7) then 3
               when left(name, 6) = left('ATUL', 6) then 4
               when left(name, 5) = left('ATUL', 5) then 5
               when left(name, 4) = left('ATUL', 4) then 6
               when left(name, 3) = left('ATUL', 3) then 7
               when left(name, 2) = left('ATUL', 2) then 8
               when left(name, 1) = left('ATUL', 1) then 9
          end)


  1. Hur man hanterar flera författare som returnerats från bok-tabell-förfrågan

  2. Konvertera SQL datumformat? [dd.mm.åå till ÅÅÅÅ-MM-DD]

  3. Kan du inte starta MySQL i XAMPP?

  4. Felhantering med markör i SQL