
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() Абориген ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 217 Пользователь №: 19846 На форуме: Карма: ![]() |
Всем привет!
Есть таблица "table" и колонка "name" и 6 строк: "яблоко 1; помидор Д" "яблоко 2; помидор Е" "яблоко 4; помидор В" "яблоко 3; помидор А" "яблоко 6; помидор Б" "яблоко 5; помидор Г" Стандартная сортировка запросом "select * from table order by name asc" выведет такой результат: "яблоко 1; помидор Д" "яблоко 2; помидор Е" "яблоко 3; помидор А" "яблоко 4; помидор В" "яблоко 5; помидор Г" "яблоко 6; помидор Б" Как сделать, чтобы результат можно было вывести еще таким образом: "яблоко 3; помидор А" "яблоко 6; помидор Б" "яблоко 4; помидор В" "яблоко 5; помидор Г" "яблоко 1; помидор Д" "яблоко 2; помидор Е" ??? Т.е. чтобы сортировка прошла по значениям, которые после знака ";" стоят. |
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Думаю, что можно попробовать сделать
select substring(...) as chr ... order by chr |
![]() |
۩
Дата
|
![]() Абориген ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 217 Пользователь №: 19846 На форуме: Карма: ![]() |
ну, думаю, не совсем верно))) т.к. поправлю изначальную версию задачи, что поле "name" не единственное, а сортировку именно по нему надо делать, а в результатах нужны все поля, т.е. select * from
--- еще прочитал: string SUBSTRING (str string, pos integer, len integer ) string SUBSTRING (str string FROM pos integer FOR len integer) Возвращает подстроку строки str длиною len символов с позиции pos. Поддерживает многобайтовые символы. Вариант с "FROM " используется в синтаксисе ANSI SQL92. В функции SUBSTRING () если не указан аргумент len, то возвращает всю подстроку строки str с позиции pos. -- Winston, если вы про эту функцию написали, то я думаю, что она не подойдет, т.к. количество символов до ";" и после будет разным. Мне кажется это не подойдет, или я ошибаюсь? Если, да, то в чем? |
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Ну так можно написать
select *, substring(...) as chr from |
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
select *, substring(name, -1, 1) as chr from Чтобы достать последнюю букву |
![]() |
۩
Дата
|
![]() Абориген ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 217 Пользователь №: 19846 На форуме: Карма: ![]() |
ну да))) покопал еще, и вроде как получилось, спасибо Winston!
запрос сделал вида SELECT *, SUBSTRING_INDEX(name, ';', -1) AS at FROM table ORDER BY at И, вроде, заработало)) Пока глюков не увидел. |
![]() |
![]() ![]() ![]() |