Как установить приоритет выбора запроса LIKE на основе позиции строки в поле?

Я пытаюсь запросить таблицу с ограниченным набором результатов, чтобы заполнить поле автозаполнения в javascript. Поэтому я использую оператор LIKE с введенной частичной строкой.

Если у меня есть, например, такая таблица, как:

tblPlaces
id     country
1      Balanca
2      Cameroon
3      Canada
4      Cape Verde
5      Denmark

Для этого примера, допустим, я хочу вернуть две строки - и да в этом примере я создал страну там;) Я хочу установить приоритет любого экземпляра, в котором частичная строка соответствует началу страны. Поэтому я начал использовать следующий запрос:

SELECT id, country FROM tblPlaces WHERE country LIKE 'ca%' LIMIT 2

Он вернул «Камерун» и «Канада», как и ожидалось. Однако в тех случаях, когда нет двух имен, в которых строка соответствует началу слова (например, «де»), я хочу, чтобы она смотрела в другом месте слова. Поэтому я изменил запрос на

SELECT id, country FROM tblPlaces WHERE country LIKE '%ca%' LIMIT 2

. Затем он вернул «Кабо-Верде» и «Дания», но при этом нарушил мой первоначальный поиск «ca», который теперь возвращает «Balanca» и «Камерун».

Итак. , мой вопрос: как это сделать, используя один запрос, который будет определять приоритет совпадения в начале слова (возможно, мне нужно использовать REGEXP?) Я также предполагаю, что если столбец «страна» проиндексирован, эти совпадения по крайней мере будет возвращено с последующим алфавитным приоритетом (например, Камерун перед Канадой и т. д.).

6
задан pirho 27 February 2018 в 09:00
поделиться