Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
Внизсортировка по varchar Найти похожие ветки
← →
zorik © (2008-04-18 12:20) [0]есть поле 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?
← →
Ega23 © (2008-04-18 12:31) [1]Я обычно практически в любой таблице, где нужна сортировка, добавляю integer-поле Ord, в котором либо пользователь сам может нужный порядок проставить (чем меньше значение, тем "выше" запись будет во всех выборках), либо я сам могу этим делом управлять.
Правда не знаю, насколько в твоей ситуации этот вариант поможет...
← →
zorik © (2008-04-18 12:33) [2]а нету в Firebird функций разделения строк. Можно бы было разделить тогда на числовую и текстовую часть?
← →
zorik © (2008-04-18 12:38) [3]Появилась идея!
В базе хранить 2 значения: номер (числовое) и приставку(текстовую). Логику реализовать на клиенте. Когда пользователь вводит или редактирует значение - разделять стринг на две части (левая числовая, а правая - текст) и записывать в базу 2 поля
Как только начал просить помощи, сразу идеи полезли )))
← →
Anatoly Podgoretsky © (2008-04-18 12:46) [4]
> а нету в Firebird функций разделения строк.
Что и этого нет?
← →
Anatoly Podgoretsky © (2008-04-18 12:48) [5]Ну и что ты будешь делать, если будет Ф1Б, правильный совет тебе дали в [1], где отсутствуют коллизии подобного и прочих родов.
← →
Johnmen © (2008-04-18 13:15) [6]
> Anatoly Podgoretsky © (18.04.08 12:46) [4]
> > а нету в Firebird функций разделения строк.Что и этого
> нет?
Есть :)
не всё так плохо для любителей затыкать горой кода огрехи проектирования...
← →
Anatoly Podgoretsky © (2008-04-18 13:28) [7]> Johnmen (18.04.2008 13:15:06) [6]
В следудующий раз получит от пользователей
Вчера было 1-а/1-р, а сегодня 1-р/1-а
← →
Johnmen © (2008-04-18 13:40) [8]
> Anatoly Podgoretsky © (18.04.08 13:28) [7]
Я и говорю, что на проектирование своё надо смотреть :))
А уж потом на функции...
← →
zorik © (2008-04-18 14:16) [9]1. такого по ТЗ не может быть "Ф1Б"
2. я это огрехом проэктирования не считаю, так как это есть просто номер какого-то объекта. На 100 объектов 95 будут чисто номерные, а 5 номер + приставка
всем спасибо
← →
Anatoly Podgoretsky © (2008-04-18 14:36) [10]> Johnmen (18.04.2008 13:40:08) [8]
Но видишь ему до лампочки, что мы говорим.
← →
zorik © (2008-04-18 14:55) [11]
> Anatoly Podgoretsky © (18.04.08 14:36) [10]
Ну хорошо.
Ваше решение. Как бы вы это решили. Это поле номер скважины. Сначала было integer, потом в ходе експлуатации "стали появлятся" разные 1-а, 2-р, 9Г. Сделал поле типа varchar.
Для различных подразделений и т.д. у меня есть поле с кодом (не путать с первичным ключем), которое вносится вручную и по нему идет сортировка.
Здесь дело не сколько во мне, а в системе стандартов. Но ее никто не будет менять, написана лет 60 назад. Нужно адаптировать все к современным требованиям. Мы работаем со старыми документами. Бывает что в таблице в одной ячейке ручкой записано 2 значения через слеш. И как тут поступить? Переделываешь тогда структуру или записываешь в базу что-то среднее
так что, зря вы меня пинаете...
← →
Johnmen © (2008-04-18 14:58) [12]
> zorik © (18.04.08 14:55) [11]
Я бы решил вот так [3] с той разницей, что в одном поле, как есть, а в другом - числовое представление того, что в первом.
Об этом и Ega23 © (18.04.08 12:31) [1] сказал.
← →
zorik © (2008-04-18 15:07) [13]так и решаем, а кто будет "неправильное" название вводить будем бить по шапке )))
← →
Anatoly Podgoretsky © (2008-04-18 15:16) [14]> Johnmen (18.04.2008 14:58:12) [12]
Я бы сделал единственную модификацию, во втором поле умноженое на 10 и при конфликте запрашивать пользователя указать правильный порядок.
Только вот это было integer, потом в ходе експлуатации "стали появлятся" разные 1-а, 2-р, 9Г. ему уде сказали, что может появится и не Число-литера, что угодно новое, ну не верит он в законы Мерфи и Паркинсона, как не верил в первом случае. Второе поле позволит сгладить некоторые моменты, отсрочит их на некоторе время, пока не начнут бить, надо же подготовиться к побегу.
← →
Anatoly Podgoretsky © (2008-04-18 15:18) [15]> Johnmen (18.04.2008 14:58:12) [12]
Я бы сделал единственную модификацию, во втором поле умноженое на 10 и при конфликте запрашивать пользователя указать правильный порядок.
Только вот это было integer, потом в ходе експлуатации "стали появлятся" разные 1-а, 2-р, 9Г. ему уде сказали, что может появится и не Число-литера, что угодно новое, ну не верит он в законы Мерфи и Паркинсона, как не верил в первом случае. Второе поле позволит сгладить некоторые моменты, отсрочит их на некоторе время, пока не начнут бить, надо же подготовиться к побегу.
← →
Johnmen © (2008-04-18 15:29) [16]
> Anatoly Podgoretsky © (18.04.08 15:16) [14]
Так я же предусмотрительно умолчал о том, как формируется числовое представление :)
А оно может формироваться безотносительно типа исходного поля.
← →
Anatoly Podgoretsky © (2008-04-18 15:40) [17]> Johnmen (18.04.2008 15:29:16) [16]
Естественно пользователь может назначить свое значение как при вводе, так и в последующем.
Эта "проблема" стара как мир и давно решена методом обхода, а не решением по существу, эта же проблема существует только в мозгах.
← →
zorik © (2008-04-18 15:50) [18]
эта же проблема существует только в мозгах
ладно, спасибо вам! "хорошего" же вы (
мнения обо мне )))
← →
Johnmen © (2008-04-18 15:56) [19]В данном [17] контексте слово "мозги" носит собирательный характер... :)
← →
Anatoly Podgoretsky © (2008-04-18 16:06) [20]> zorik (18.04.2008 15:50:18) [18]
Не о тебе, а о "автоматизаторах", делом должен заниматься специалист, а то как обычно.
← →
Anatoly Podgoretsky © (2008-04-18 16:45) [21]> Johnmen (18.04.2008 15:56:19) [19]
Любят некоторые все принимать на свой счет :-)
Не знаю даже почему, какие причины.
← →
Ganda (2008-04-25 13:18) [22]у меня такая же проблема была, я её решил через UDF
и тебе того же советую так же
← →
VadimSpb (2008-04-26 20:14) [23]
> Не о тебе, а о "автоматизаторах", делом должен заниматься
> специалист, а то как обычно.
Это для инвестора? :-)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c