#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