Вот упрощенная версия таблицы, которую я имею:
sometable
title | tag | score
-----------------------
foo1 bar 100
bar2 oobar 50
meh3 25
В настоящее время, если я хочу выполнить поиск в таблице и иметь oo
моим поисковым запросом, я выполню что-то вроде:
SELECT *, (title||" "||tag) AS titletag
FROM sometable WHERE titletag LIKE "%oo%"
ORDER BY score DESC
и приведенное выше вернет строку foo1
первой, а bar2
секунду.
Я хотел бы добавить, что если поисковый запрос (oo
) совпадает с началом tag
(например, tag LIKE "oo%"
), я хочу, чтобы указанные строки были первыми перед любой другой строкой, независимо от того, оценки, но все еще сохраняют оставшуюся часть исходного запроса.
Таким образом, при поиске oo
я бы хотел, чтобы строка bar2
возвращалась первой, поскольку oo
соответствует началу oobar
, а затем foo1
идет вторым, даже если bar2
оценка ниже foo1
.
Как мне этого добиться?