Задать вопрос
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 запроса?
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Нетология
    Инженер по тестированию
    8 месяцев
    Далее
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Надо сортировать по расстоянию Левенштейна (levenshtein) от выражения "test" до поля email.
Ответ написан
Комментировать
Delgus
@Delgus Автор вопроса
В Postgres есть ORDER BY POSITION()
ORDER BY POSITION('test' in email)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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