Упорядочить по String с пробелами между

0

Столбец "Бизнес" в моей таблице выглядит следующим образом:

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, но похоже, что он не работает с подстрокой с пробелами. Вся помощь была оценена.

  • 0
    По какому правилу упорядочивается одна строка за другой?
  • 0
    @trincot обновил мой вопрос
Теги:
database

3 ответа

3
Лучший ответ

Вы можете иметь несколько уровней упорядочения:

order by 
  locate('Michael Kors', business)=1 desc, 
  locate('Michael Kors', business)>0 desc, 
  business

Первая сортирует точные совпадения сверху, следующий уровень сортирует остальные соответствующие строки, а третий сортирует все остальное.

  • 0
    офигенно ... это помогает ..
1

Вы можете перечислить булевы выражения в предложении 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
  • 0
    Отлично ... это помогает ..
1

Попробуй это,

order by FIELD(business, 'Michael Kors)
  • 0
    Спасибо @Nipun Sampath, ваше решение тоже сработало, я оцениваю самое быстрое из всех предложенных здесь, так как мне нужно запустить его на 10 миллионах данных.
  • 0
    Рад был помочь :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню