На данный момент выборка сортируется через ORDER BY ASC следующим образом: символ "-", цифра, буква. Стоит задача, чтобы сортировка была: цифра, буква, символ "-" Перекопал кучу инфы, нашел несколько вариантов решения: 1. в ORDER BY использовать CASE 2. найти collation с сортировкой цифра, буква, - 3. написать свой файл с правилами сортировки (collate) 4. писать пользовательскую функцию для метода пузырька с применением диапазонов Пункт 4-ый для меня приемлем, метод пузырька нашел на php, теперь не могу понять логику действий применительно к диапазонам, я так понимаю, что надо делать диапазон для цифр, отдельно - букв и для "-" Подскажите что-нибудь по этой теме. Заранее спасибо.
P.S. забыл сказать - данные выгребаются из одного столбца и размещение данных в несколько столбцов не предусматривается.
ну как вариант: create table #tmp insert into #tmp выбрать все строки, где первая цифра order by ... insert into #tmp выбрать все строки, где первая буква order by ... insert into #tmp выбрать все строки, где "-" select * from #tmp drop table #tmp
tectolog добавляешь ещё одно поле, по которому будешь производить сортировку. в то поле заносишь текст, по которому ты сортировал раньше, только внутри данного текста заменяешь все дефисы на пробелы. Т.к. пробел идёт раньше любого другого символа, то сортировка по данному полю будет той, что нужна.
спасибо за варианты, просто не успел отписаться еще об одном найденном решении: usort($array, strnatcmp); - готовая функция php
Вопрос в связи с вышеизложенным: на самом деле нужна была сортировка как в Excel по алфавиту, заметил и не могу понять одну странность, далее отсортированный Excel-ем по алфавиту фрагмент списка: а-в-т-о-б-у-с а-в-т-о-б-у-с-ы автовинилъ автодлясвадьбы авто-для-свадьбы автодлясвадьбывмоскве авто-для-свадьбы-в-москве а-в-т-о-з-в-у-к автозвукъ авто-звукъ автомобиль-для-свадьбы автомобиль-для-свадьбы-в-москве автомобиль-для-свадьбы-недорого автомобиль-на-свадьбу автомобиль-на-свадьбу-в-москве автомобиль-на-свадьбу-недорого авто-на-свадьбу-в-москве а-в-т-о-р-е-м-о-н-т авторемонтъ автосервис-мск автосервис-ооо автосервисы-мск автотехцентръ а-в-т-о-т-ю-н-и-н-г автотюнингъ авто-тюнингъ агетствадетективные агетства-детективные а-л-к-о-г-о-л-ь алкогольвмоскве алкоголь-в-москве алкоголь-качественный стиранным и нелогичным для меня является расположение таких слов, как а-в-т-о-з-в-у-к, а-в-т-о-р-е-м-о-н-т, b]а-в-т-о-т-ю-н-и-н-г[/b] - почему они находятся посреди алфавитного массива, а не после буквенных символов?
tectolog смею предположить, что эксель при сортировке тупо игнорирует "небуквы". т.е. список получается: так понятнее?
да про это все понятно. Теперь задача немного меняется, уточняю еще исходные данные: в БД находятся строки 2-ух видов - как бы слитное написание и раздельное, не все слитные строки дублируются раздельным написанием. Задача: выводить так чтобы в целом шла сортировка в алфавитном порядке, но если у строки есть дублер с раздельным написанием, то дублер помещать в массив сразу после своего слитного оригинала - вот... вот так. В связи с этим, что лучше: писать пользовательскую функцию для разбора массива или писать сложный запрос в БД? Кто сталкивался с такими наворотами? Спасибо.