![]() |
|
Модераторы: Akina |
![]()
|
|
| Komatoz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 2.7.2004 Где: Ю-Сахалинск Репутация: нет Всего: нет |
Есть поле House (№дома) - текстовое..
Его надо отсортировать так, чтобы было попорядку, а не 1 10 100 100А 197 197А 19Б 2 20 200
Это сообщение отредактировал(а) Komatoz - 28.2.2008, 10:22 |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
А как вариант дополнительной колонки (decimal) и повесить тригер, который определяет последний символ число или нет, и если нет - то меняет А на .1, Б на .2, в на .3 и т.д. и конвертирует в число и запихивает его в эту колонку, а, дальше сортировать по ней?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 25 Всего: 454 |
Если бы буквы хранились в отдельной колонке (HouseNumber-HouseDigit), то
Однако при наличии буквы функция даст ошибку. Полагаю наиболее разумным изменение структуры, а если это невозможно - написание хранимой функции конвертации. Скажем, по описанному Itsys алгоритму. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Komatoz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 2.7.2004 Где: Ю-Сахалинск Репутация: нет Всего: нет |
Уже несколько тысяч записей - колонку не добавить, что такое тригер - не работал с ними..
Добавлено @ 11:02 В оракл есть вот такое:
можно ли подобное сюда прикрутить? Это сообщение отредактировал(а) Komatoz - 28.2.2008, 11:06 |
|||
|
||||
| Magnifico |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 23.1.2008 Где: Московская област ь Репутация: 10 Всего: 17 |
Попробуй в таком духе, я не думаю что у дома может быть префикс Щ ,Ч, Ю,Я
ну в случае чего добавишь
-------------------- Всё в порядке - спасибо зарядке ! |
|||
|
||||
| Komatoz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 2.7.2004 Где: Ю-Сахалинск Репутация: нет Всего: нет |
если делать
то выдает ошибку.. можно ли не использовать like, а использовать регулярные выражения (как в PHP)? |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
Magnifico,
В этом случае у тебя не будут по порядку дома с индексами (А,Б....) т.е. может получиться, что дом с инексом Б будет раньше, чем А, тогда уж лучше так:
Добавлено через 1 минуту и 37 секунд Какую ошибку? |
|||
|
||||
| Magnifico |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 23.1.2008 Где: Московская област ь Репутация: 10 Всего: 17 |
Itsys да согласен!
-------------------- Всё в порядке - спасибо зарядке ! |
|||
|
||||
| Komatoz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 2.7.2004 Где: Ю-Сахалинск Репутация: нет Всего: нет |
А что если:
создать столбец и его как следует пронумеровать и при вызове селекта указывать сортировку по доп полю.. |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
Я тебе это в самом начале и советовал
|
|||
|
||||
| Komatoz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 2.7.2004 Где: Ю-Сахалинск Репутация: нет Всего: нет |
Где про это почитать - я это ниразу не юзал..
|
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 1 Всего: 34 |
||||
|
||||
| Komatoz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 2.7.2004 Где: Ю-Сахалинск Репутация: нет Всего: нет |
Сенкс..
Вдруг я бы нетуда зашел.. |
|||
|
||||
| SharedNoob |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 25.6.2007 Где: UA Репутация: 2 Всего: 5 |
хм.
Принцип сортировки строки таков 1 10 2 20 3 30 но если добавить пробелы впереди и сделать строку одинаковой длинны то выйдет так '____1' '____2' '____3' '___10' '___20' '___30' собственно order by right(' '+ltrim(rtrim(House)),10) Это сообщение отредактировал(а) SharedNoob - 5.3.2008, 12:28 |
|||
|
||||
| nawok78 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 13.3.2008 Репутация: нет Всего: нет |
пример сортировки
|
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |