Столбец "Бизнес" в моей таблице выглядит следующим образом:
Michael Kors
Baltimore Michael Kors
Charlotte Michael Kors
Michael Texas
Kors Dallas
Michael Kors
Я должен применить порядок в этом столбце на String 'Michael Kors', поэтому отсортированный результат должен быть примерно таким:
Michael Kors
Michael Kors
Baltimore Michael Kors
Charlotte Michael Kors
Kors Dallas
Michael Texas
если String содержит подстроку Michael Kors, она должна быть сверху в алфавитном порядке. Таким образом, в приведенном выше примере 2 строки с точным соответствием находятся сверху, а затем Балтимор и Шарлотта 3-й и 4-й в алфавитном порядке. Не волнуется о других строках, которые не содержат точного слова Michael Kors
Я попытался использовать Substring_Index, но похоже, что он не работает с подстрокой с пробелами. Вся помощь была оценена.
Вы можете иметь несколько уровней упорядочения:
order by
locate('Michael Kors', business)=1 desc,
locate('Michael Kors', business)>0 desc,
business
Первая сортирует точные совпадения сверху, следующий уровень сортирует остальные соответствующие строки, а третий сортирует все остальное.
Вы можете перечислить булевы выражения в предложении order by
и применить порядок убывания, чтобы записи, для которых это выражение истинно, будут упорядочены до тех, которые дают false. Затем укажите в конце алфавитном порядке, чтобы определить порядок, когда все остальные выражения не дают различий для двух записей:
select *
from mytable
order by (business = 'Michael Kors') desc,
(business like '%Michael Kors%') desc,
(business like '%Kors%') desc,
(business like '%Michael%') desc,
business
Попробуй это,
order by FIELD(business, 'Michael Kors)