|
|
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Как отсортировать данные в символьном поле....если я сортирую, уау символьное, то получается следущее 1 1.1 1.1.1 .... 10 10.1 10.1.1 2 2.1 2.1.1 ну и т.д..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 07:35 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Сначала надо привести к виду пригодному для сортировки в нужном тебе порядке. Например: 1 => 001.000.000 1.1.1 => 001.001.001 10.1.1 => 010.001.001 [SRC=http://www.sql.ru/forum/actualthread.aspx?tid=531522]Тут[/SRC] подобное обсуждали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 07:51 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Ссылку неправильно оформил. Тут смотри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 08:20 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Спасибо, только, как я слышал, не рекомендуют приименять UDF в индексировании..., желательно через стандартные....вот родилось в результате эксперементов... INDEX on STRTRAN(STR(VAL(SUBSTR(kod_usl,1,AT(".",kod_usl)-1)),3)," ","0"); +STRTRAN(STR(VAL(SUBSTR(kod_usl,1,AT(".",kod_usl)+1)),3)," ","0"); +STRTRAN(STR(VAL(SUBSTR(kod_usl,RAT(".",kod_usl)+1)),3)," ","0") TO x ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 08:41 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Правда, подумал сейчас нет в этом решении универсальности...текст загоняется с Excel, и сколько там будет подразделов неизветно..надо конечно додумывать...но будут претензии будем думать дальше.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 08:44 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
ННовичокСпасибо, только, как я слышал, не рекомендуют приименять UDF в индексировании... Вылазят проблемы из-за того что функция м.б. не всегда доступна. Но если используешь курсоры (или временные таблицы), то можно сначала выборку сделать потом курсор проиндексировать с UDF, тут можно самодельную функцию в индексное выражение вставить. Чтобы универсально работало (независимо от кол-ва точек) функция должна преобразовывать примерно так: 1 => "001." 1.1.1 => "001.001.001." 10.1 => "010.001." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 10:01 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Еще один вариант - хранить в отдельном поле порядок сортировки. Т.е. добавляешь поле int и проставляешь значения чтобы при сортировке по ним все вышло в нужном порядке. 1 => 1 1.1.1 => 10 10.1.1 => 5000 Минус - при любом добавлении/изменении надо это поле расчитывать. Если будешь делать - разрывы между соседними записями оставляй, чтобы в будущем между ними можно было вставку сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 10:07 |
|
||
|
Отсортировать данные
|
|||
|---|---|---|---|
|
#18+
Dima TЕще один вариант - хранить в отдельном поле порядок сортировки. Т.е. добавляешь поле int и проставляешь значения чтобы при сортировке по ним все вышло в нужном порядке. 1 => 1 1.1.1 => 10 10.1.1 => 5000 Минус - при любом добавлении/изменении надо это поле расчитывать. Если будешь делать - разрывы между соседними записями оставляй, чтобы в будущем между ними можно было вставку сделать. Проще в этом дополнительном поле не порядковый номер хранить, а то же самое значение, но в виде удобном для сортировки 1 => 000000001 1.1.1 => 001001001 10.1.1 => 010001001 На каждый уровень 3 знака с ведущими нулями. Если уровней может быть больше 3, то выделяешь символьную строку длиной 3*х, где х - максимально возможное число уровней вложенности. Далее сделать RULE уровня записи, которое автоматом будет преобразовывать введенное значение в значение для сортировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2008, 14:31 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35282706&tid=1587838]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 327ms |

| 0 / 0 |
