MailRes
26.10.2012 - 00:03
Всем привет!
Есть таблица "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; помидор Е"
???
Т.е. чтобы сортировка прошла по значениям, которые после знака ";" стоят.
Winston
26.10.2012 - 00:07
Думаю, что можно попробовать сделать
select substring(...) as chr ... order by chr
MailRes
26.10.2012 - 00:16
ну, думаю, не совсем верно))) т.к. поправлю изначальную версию задачи, что поле "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, если вы про эту функцию написали, то я думаю, что она не подойдет, т.к. количество символов до ";" и после будет разным.
Мне кажется это не подойдет, или я ошибаюсь? Если, да, то в чем?
Winston
26.10.2012 - 00:19
Ну так можно написать
select *, substring(...) as chr from
Winston
26.10.2012 - 00:46
select *, substring(name, -1, 1) as chr from
Чтобы достать последнюю букву
MailRes
26.10.2012 - 00:55
ну да))) покопал еще, и вроде как получилось, спасибо
Winston!
запрос сделал вида
SELECT *, SUBSTRING_INDEX(name, ';', -1) AS at FROM table ORDER BY at
И, вроде, заработало)) Пока глюков не увидел.