Задать вопрос
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 запроса?
  • Вопрос задан
  • 48 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Надо сортировать по расстоянию Левенштейна (levenshtein) от выражения "test" до поля email.
Ответ написан
Комментировать
Delgus
@Delgus Автор вопроса
В Postgres есть ORDER BY POSITION()
ORDER BY POSITION('test' in email)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы