powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка
12 сообщений из 12, страница 1 из 1
Сортировка
    #32069534
Urs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Urs
Гость
Может глупый вопрос, конечно, но

есть колонка varchar, выдает
А1
A11
A12
A2

хотелось бы
A1
A2
A11
A12

Можно ли?
...
Рейтинг: 0 / 0
Сортировка
    #32069544
Александр Азаркович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А всегда только один символ перед цифрами?
Тогда

Код: plaintext
1.
select * from tableName
order by right(fieldName,len(fieldName)- 1 )


Но если таблица большая, будет долго работать...
Тогда лучше оптимизационное числовое поле, которое триггером заполнять.
...
Рейтинг: 0 / 0
Сортировка
    #32069571
Urs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Urs
Гость
Не работает.
Может у меня, что в Collation не так?
Cyrillic_General_CI_AS, MS SQL 2000.

А символ один.
...
Рейтинг: 0 / 0
Сортировка
    #32069573
Александр Азаркович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как не работает-то? Чего говорит?
Collation у меня такой же.
...
Рейтинг: 0 / 0
Сортировка
    #32069575
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не будет

Строковое поле так сортируется, это тебе либо еще одно поле нужно, где только цифры будут, без буквы, либо так:

Код: plaintext
order by cast(right(fieldName,len(fieldName)- 1 ) as int)


Но так будет очень медленно, если записей много
...
Рейтинг: 0 / 0
Сортировка
    #32069583
Urs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Urs
Гость
При
order by right(rdr_id,len(rdr_id)-1)
все по-старому

при
order by LEFT(rdr_id,len(rdr_id)-1)

A1
A2
A12
A11
Это в тестовой таблице, а в нормальной, что-то типа
A198
A193
A194
A195
A196
A20
....
A209 Вообщем, непонятно что
...
Рейтинг: 0 / 0
Сортировка
    #32069586
Urs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Urs
Гость
tygra:

Да, пойдет, спасибо
...
Рейтинг: 0 / 0
Сортировка
    #32069589
Urs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Urs
Гость
Всмысле, всем спасибо :)
...
Рейтинг: 0 / 0
Сортировка
    #32069596
f_mikle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select * from tableName
order by right(fieldName,len(fieldName)-1)
- разве поможет? - все равно же по символьной последовательности упорядочение...
Наверное, тогда уж так -
select * from tableName
order by CAST(right(fieldName,len(fieldName)-1) AS INT)
Быстродействие при этом, естественно, страдает...

Кроме того, замечу, что данный вариант проходит только с полями типа varchar, так как если поле типа char(n), len(fieldName) может выдавать длину только "значимой" части, в то время как "right" берет правую часть относительно поля по всей его длине - в итоге, если длина поля "с запасом", в большинстве случаев одни пробелы конструкция "right(fieldName,len(fieldName)-1)" возвращает - на MSSQL7, во всяком случае, у меня именно такой эффект имел место, когда пробовал с полем типа "char(n)" такую операцию проделать...
...
Рейтинг: 0 / 0
Сортировка
    #32069598
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при
order by LEFT(rdr_id,len(rdr_id)-1)

A198
A193
A194
A195
A196
A20
....
A209 Вообщем, непонятно что


Почему же, понятно...
Сортирует исходя из всех символов, кроме правого крайнего. В случае "А19...Э оставляет порядок как был в таблице.
...
Рейтинг: 0 / 0
Сортировка
    #32069602
Axr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно триггером этот столбец заменять на "A"+[сколько надо нулей]+[цифири]

тогда будет просто ORDER BY FIELDNAME
A000...01
A000...02
............
A000...10

Но это, конечно, если не будет наведенных косяков...
...
Рейтинг: 0 / 0
Сортировка
    #32069617
Александр Азаркович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну конечно, CAST нужен. Прошу прощения.
А про varchar в самом вопросе было сказано, что именно этот тип используется.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]