Как установить порядок по условию на sqlite на основе условия where?

#sqlite #android-sqlite #sql-order-by

#sqlite #android-sqlite #sql-order-by

Вопрос:

У меня есть следующий запрос и список стран в базе данных sqlite

 select * from country where name like 'searchString%' or name like '% searchString%'
 

Если строка поиска «in», результат будет выглядеть так

 1   British Indian Ocean Territory
2   India
3   Indonesia
 

Но мне нужен результат первого условия (например, ‘searchString%’), результат должен быть первым, например

 1   India
2   Indonesia
3   British Indian Ocean Territory
 

Мне нужно, чтобы это было сделано в одном запросе. Возможно ли это?

Комментарии:

1. Пожалуйста, не помечайте несвязанные СУБД, если вы можете удалить MySQL, SQL Server и PostgreSQL. Спасибо

2. Я просто пометил их, потому что запрос из них в основном имеет ту же логику. Так что помечено только это

3. Хорошо, кто-то это сделал. Я добавил новые теги, связанные с вопросом.

Ответ №1:

Вам нужно только 1 условие в WHERE предложении, и условие:

 name LIKE 'in%' DESC
 

в ORDER BY предложении будут возвращены страны, начинающиеся с 'in' вверху:

 SELECT * 
FROM country 
WHERE name LIKE '%in%'
ORDER BY name LIKE 'in%' DESC, name
 

Другим вариантом является использование строковых функций:

 SELECT * 
FROM country 
WHERE name LIKE '%in%'
ORDER BY instr(lower(name), 'in'), name
 

Смотрите демонстрацию.
Результаты:

 > id | name                          
> -: | :-----------------------------
>  2 | India                         
>  3 | Indonesia                     
>  1 | British Indian Ocean Territory