powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка
3 сообщений из 3, страница 1 из 1
Сортировка
    #32016794
Michael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется поле varchar(7) - номер дома (в нем могут быть буквы)
Сейчас сортируется по нему так:
1
11
2
22А
5
и т.п.
Нельзя ли сделать
1
2
5
11
22А
У кого нибудь есть варианты?
...
Рейтинг: 0 / 0
Сортировка
    #32016795
Ilya Zaltsman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Naprimer tak:

SELECT fld
FROM building
ORDER BY
CAST(CASE patindex('%[A-Z]%', fld)
WHEN 0 THEN fld
ELSE left(fld, patindex('%[A-Z]%', fld)-1)
END AS int)
, CASE patindex('%[A-Z]%', fld)
WHEN 0 THEN ''
ELSE substring(fld, patindex('%[A-Z]%', fld), LEN(fld)- (patindex('%[A-Z]%', fld)-1))
END
...
Рейтинг: 0 / 0
Сортировка
    #32016796
x3_14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то слишком сложно. Может проще добавить спереди пробелов, что-бы строки були одинаковой длины?
тогда '_11' будет > '__2'

select field
from table
where ...
order by REPLICATE(' ', X - DATALENGTH(field)) + field)

здесь X - мксимальная предполагаяемая длина строки, в вашем случае = 7
если дело будет на 2000, то для сортировки будет использоваться индекс по field (если он есть)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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