Delgus
@Delgus

Сорировка по более раннему вхождению строки в запрос?

Есть такой запрос. По строке передаваемой юзером ищем что то в базе
SELECT email FROM users WHERE email ILIKE :query ORDER BY email

Получаем такой вот список по запросу "test"
SELECT email FROM users WHERE email ILIKE "%test%" ORDER BY email


aaTESTyui@yuiy.oiu
aTESTyui@yuiy.oiu
bTESTyui@yuiy.oiu
cTESTyui@yuiy.oiu
TESTaui@yuiy.oiu

А я хочу чтоб с более ранним вхождением подстроки были выше
TESTaui@yuiy.oiu
aTESTyui@yuiy.oiu
bTESTyui@yuiy.oiu
cTESTyui@yuiy.oiu
aaTESTyui@yuiy.oiu

Возможно ли сделать такое на уровне sql запроса?
  • Вопрос задан
  • 39 просмотров
Пригласить эксперта
Ответы на вопрос 2
@mayton2019
Ent. Software engineer. Oracle. SQL. BigData.
Надо сортировать по расстоянию Левенштейна (levenshtein) от выражения "test" до поля email.
Ответ написан
Delgus
@Delgus Автор вопроса
В Postgres есть ORDER BY POSITION()
ORDER BY POSITION('test' in email)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы