|
|
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
Может глупый вопрос, конечно, но есть колонка varchar, выдает А1 A11 A12 A2 хотелось бы A1 A2 A11 A12 Можно ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 12:09:23 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
А всегда только один символ перед цифрами? Тогда Код: plaintext 1. Но если таблица большая, будет долго работать... Тогда лучше оптимизационное числовое поле, которое триггером заполнять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 12:26:05 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
Не работает. Может у меня, что в Collation не так? Cyrillic_General_CI_AS, MS SQL 2000. А символ один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 12:58:10 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
А как не работает-то? Чего говорит? Collation у меня такой же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:01:54 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
И не будет Строковое поле так сортируется, это тебе либо еще одно поле нужно, где только цифры будут, без буквы, либо так: Код: plaintext Но так будет очень медленно, если записей много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:02:32 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
При order by right(rdr_id,len(rdr_id)-1) все по-старому при order by LEFT(rdr_id,len(rdr_id)-1) A1 A2 A12 A11 Это в тестовой таблице, а в нормальной, что-то типа A198 A193 A194 A195 A196 A20 .... A209 Вообщем, непонятно что ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:12:54 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
tygra: Да, пойдет, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:14:58 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
Всмысле, всем спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:17:15 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
select * from tableName order by right(fieldName,len(fieldName)-1) - разве поможет? - все равно же по символьной последовательности упорядочение... Наверное, тогда уж так - select * from tableName order by CAST(right(fieldName,len(fieldName)-1) AS INT) Быстродействие при этом, естественно, страдает... Кроме того, замечу, что данный вариант проходит только с полями типа varchar, так как если поле типа char(n), len(fieldName) может выдавать длину только "значимой" части, в то время как "right" берет правую часть относительно поля по всей его длине - в итоге, если длина поля "с запасом", в большинстве случаев одни пробелы конструкция "right(fieldName,len(fieldName)-1)" возвращает - на MSSQL7, во всяком случае, у меня именно такой эффект имел место, когда пробовал с полем типа "char(n)" такую операцию проделать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:24:46 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
при order by LEFT(rdr_id,len(rdr_id)-1) A198 A193 A194 A195 A196 A20 .... A209 Вообщем, непонятно что Почему же, понятно... Сортирует исходя из всех символов, кроме правого крайнего. В случае "А19...Э оставляет порядок как был в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:29:46 |
|
||
|
Сортировка
|
|||
|---|---|---|---|
|
#18+
Еще можно триггером этот столбец заменять на "A"+[сколько надо нулей]+[цифири] тогда будет просто ORDER BY FIELDNAME A000...01 A000...02 ............ A000...10 Но это, конечно, если не будет наведенных косяков... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 13:30:59 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32069596&tid=1818695]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 287ms |

| 0 / 0 |
