Я пытаюсь запросить таблицу для ограниченного набора результатов, чтобы заполнить поле автозаполнения в 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
Это вернуло «Камерун» и «Канаду», как и ожидалось. Однако в тех случаях, когда нет двух имен, в которых строка соответствует началу слова (например, «de»), я хочу, чтобы она выглядела в другом месте слова. Поэтому я изменил запрос, чтобы он стал
SELECT id, country FROM tblPlaces WHERE country LIKE '%ca%' LIMIT 2
Затем были возвращены «Кабо-Верде» и «Дания», но при этом прервался мой первоначальный поиск «ca», который теперь возвращает «Balanca» и «Камерун».
Итак, мой вопрос заключается в том, как это сделать, используя один запрос, который будет определять приоритет совпадения в начале слова (возможно, мне нужно использовать REGEXP?). Я также предполагаю, что если столбец «страна» при индексировании эти совпадения будут по крайней мере возвращены с последующим алфавитным приоритетом (т. е. Камерун до Канады и т. д.).