![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сортировка по varchar [Firebird]
zorik © (2008-04-18 12:20:00)есть поле name типа varchar с данными: 1, 2, 10, 1-р, 21, 3-е, ...
нужно "правильно" отсортировать данные по этому полю, тоесть:
1, 1-р, 2, 3-е, 10, 21, ...
order by name<code/> возвращает: 1, 10, 1-р, 2, 21, 3-е, ...
раньше я обходил эту проблему с использованием UDF - создавал допольнительное полеSORTNAME COMPUTED BY (mysort(name))<code/>, где функция mysort возвращала преобразованое поле, например
1-р -> 0001-р,
10 -> 0010,
...
какие будут решения, чтоб не использовать UDF?
VadimSpb (2008-04-26 20:14:00) [1]
> Не о тебе, а о "автоматизаторах", делом должен заниматься
> специалист, а то как обычно.
Это для инвестора? :-)))
Ganda (2008-04-25 13:18:00) [2]у меня такая же проблема была, я её решил через UDF
и тебе того же советую так же
Anatoly Podgoretsky (2008-04-18 16:45:00) [3]> Johnmen (18.04.2008 15:56:19) [19]
Любят некоторые все принимать на свой счет :-)
Не знаю даже почему, какие причины.
Anatoly Podgoretsky (2008-04-18 16:06:00) [4]> zorik (18.04.2008 15:50:18) [18]
Не о тебе, а о "автоматизаторах", делом должен заниматься специалист, а то как обычно.
Johnmen (2008-04-18 15:56:00) [5]В данном [17] контексте слово "мозги" носит собирательный характер... :)
zorik (2008-04-18 15:50:00) [6]
эта же проблема существует только в мозгах
ладно, спасибо вам! "хорошего" же вы (
мнения обо мне )))
Anatoly Podgoretsky (2008-04-18 15:40:00) [7]> Johnmen (18.04.2008 15:29:16) [16]
Естественно пользователь может назначить свое значение как при вводе, так и в последующем.
Эта "проблема" стара как мир и давно решена методом обхода, а не решением по существу, эта же проблема существует только в мозгах.
Johnmen (2008-04-18 15:29:00) [8]
> Anatoly Podgoretsky © (18.04.08 15:16) [14]
Так я же предусмотрительно умолчал о том, как формируется числовое представление :)
А оно может формироваться безотносительно типа исходного поля.
Anatoly Podgoretsky (2008-04-18 15:18:00) [9]> Johnmen (18.04.2008 14:58:12) [12]
Я бы сделал единственную модификацию, во втором поле умноженое на 10 и при конфликте запрашивать пользователя указать правильный порядок.
Только вот это было integer, потом в ходе експлуатации "стали появлятся" разные 1-а, 2-р, 9Г.ему уде сказали, что может появится и не Число-литера, что угодно новое, ну не верит он в законы Мерфи и Паркинсона, как не верил в первом случае. Второе поле позволит сгладить некоторые моменты, отсрочит их на некоторе время, пока не начнут бить, надо же подготовиться к побегу.
Anatoly Podgoretsky (2008-04-18 15:16:00) [10]> Johnmen (18.04.2008 14:58:12) [12]
Я бы сделал единственную модификацию, во втором поле умноженое на 10 и при конфликте запрашивать пользователя указать правильный порядок.
Только вот это было integer, потом в ходе експлуатации "стали появлятся" разные 1-а, 2-р, 9Г.ему уде сказали, что может появится и не Число-литера, что угодно новое, ну не верит он в законы Мерфи и Паркинсона, как не верил в первом случае. Второе поле позволит сгладить некоторые моменты, отсрочит их на некоторе время, пока не начнут бить, надо же подготовиться к побегу.
zorik (2008-04-18 15:07:00) [11]так и решаем, а кто будет "неправильное" название вводить будем бить по шапке )))
Johnmen (2008-04-18 14:58:00) [12]
> zorik © (18.04.08 14:55) [11]
Я бы решил вот так [3] с той разницей, что в одном поле, как есть, а в другом - числовое представление того, что в первом.
Об этом и Ega23 © (18.04.08 12:31) [1] сказал.
zorik (2008-04-18 14:55:00) [13]
> Anatoly Podgoretsky © (18.04.08 14:36) [10]
Ну хорошо.
Ваше решение. Как бы вы это решили. Это поле номер скважины. Сначала было integer, потом в ходе експлуатации "стали появлятся" разные 1-а, 2-р, 9Г. Сделал поле типа varchar.
Для различных подразделений и т.д. у меня есть поле с кодом (не путать с первичным ключем), которое вносится вручную и по нему идет сортировка.
Здесь дело не сколько во мне, а в системе стандартов. Но ее никто не будет менять, написана лет 60 назад. Нужно адаптировать все к современным требованиям. Мы работаем со старыми документами. Бывает что в таблице в одной ячейке ручкой записано 2 значения через слеш. И как тут поступить? Переделываешь тогда структуру или записываешь в базу что-то среднее
так что, зря вы меня пинаете...
Anatoly Podgoretsky (2008-04-18 14:36:00) [14]> Johnmen (18.04.2008 13:40:08) [8]
Но видишь ему до лампочки, что мы говорим.
zorik (2008-04-18 14:16:00) [15]1. такого по ТЗ не может быть "Ф1Б"
2. я это огрехом проэктирования не считаю, так как это есть просто номер какого-то объекта. На 100 объектов 95 будут чисто номерные, а 5 номер + приставка
всем спасибо
Johnmen (2008-04-18 13:40:00) [16]
> Anatoly Podgoretsky © (18.04.08 13:28) [7]
Я и говорю, что на проектирование своё надо смотреть :))
А уж потом на функции...
Anatoly Podgoretsky (2008-04-18 13:28:00) [17]> Johnmen (18.04.2008 13:15:06) [6]
В следудующий раз получит от пользователей
Вчера было 1-а/1-р, а сегодня 1-р/1-а
Johnmen (2008-04-18 13:15:00) [18]
> Anatoly Podgoretsky © (18.04.08 12:46) [4]
> > а нету в Firebird функций разделения строк.Что и этого
> нет?
Есть :)
не всё так плохо для любителей затыкать горой кода огрехи проектирования...
Anatoly Podgoretsky (2008-04-18 12:48:00) [19]Ну и что ты будешь делать, если будет Ф1Б, правильный совет тебе дали в [1], где отсутствуют коллизии подобного и прочих родов.
Anatoly Podgoretsky (2008-04-18 12:46:00) [20]
> а нету в Firebird функций разделения строк.
Что и этого нет?