Necesito una consulta de SQLite que busque 1 campo solo con LIKE.SQLite LIKE & ORDER BY Consulta de coincidencia
Ejemplo básico:
SELECT name FROM table WHERE name LIKE "%John%" ORDER BY name LIMIT 10;
El problema es que quiero que el resultado que se ordenó de esta manera:
- Si el campo es igual (por ejemplo, "John")
- Si el campo comienza con "Juan" (por ejemplo, "John Doe")
- Si el campo contiene "Juan" (por ejemplo, "Jane John Doe")
La consulta siguiente logra el resultado esperado, pero es 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 consulta anterior es más lento (o lo probé incorrectamente) que la alternativa de utilizar 3 consultas separadas (una para coincidencia exacta, uno para comienza con y uno para contiene).
¿Hay alguna otra alternativa?