Ho bisogno di una query SQLite che cerchi solo 1 campo utilizzando LIKE.SQLite LIKE e ORDER BY Query di corrispondenza
Esempio di base:
SELECT name FROM table WHERE name LIKE "%John%" ORDER BY name LIMIT 10;
Il problema è che voglio il risultato da ordinare in questo modo:
- Se il campo è uguale (ad esempio, "John")
- Se il campo inizia con "John" (ad esempio, "John Doe")
- Se il campo contiene "John" (ad esempio, "Jane John Doe")
La seguente query raggiunge il risultato atteso, ma è lento:
SELECT name FROM table WHERE name LIKE "%John%" ORDER BY CASE WHEN name = "John"
THEN 1 ELSE 2 END, CASE WHEN name LIKE "John%" THEN 1 ELSE 2 END, name LIMIT 10;
La query sopra è più lento (o ho testato erroneamente) che l'alternativa di usare 3 query separate (una per la corrispondenza esatta, uno per inizia con e uno per contiene).
Ci sono altre alternative?