|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Есть таблица TBL в ней поле ss1 типа string. В поле находятся только цифры. 1 10 12 2 23 25 3 31 как их отсортировать по возрастанию 1 2 3 10 12 23 25 31 Поле строковое!!!!!!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2013, 12:51 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Сконвертировать строку в число ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2013, 12:52 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2013, 12:55 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Если в поле ss1 есть не только цифры. 1 10 12 2 23 25 3 31 Д1 как отсортировать по возрастанию 1 2 3 10 12 23 25 31 Д1 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2014, 14:40 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
На SQL 2012 TRY_PARSE (ss1 AS INT) До SQL 2012 RIGHT('00000' + ss1, 6) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2014, 14:43 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
a_voronin, Если использовать order by try_parse(ss1 as int), то для нечисловых данных она вернет null, поэтому все нечисловые данные будут выведены перед числовыми. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В условиях задачи нечисловые данные должны следовать за числовыми. В случае Код: sql 1.
для тех же данных получим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2014, 17:21 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Wlr-la_voronin, Если использовать order by try_parse(ss1 as int), то для нечисловых данных она вернет null, поэтому все нечисловые данные будут выведены перед числовыми. Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
В условиях задачи нечисловые данные должны следовать за числовыми. В случае Код: sql 1.
для тех же данных получим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
ТС утверждал сначала "В поле находятся только цифры." Потом изменил формулировку. Вопрос к немё -- его устраивает второй вариант. Если там лидирующие пробелы есть, то ltrim можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2014, 17:30 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Может быть не совсем правильно выразился. Цель такая. Поле ss1 - строковое. В нем содержатся числа и и строки. Например так: 20 2 12 7777 G3 ЖЕ77 ЖЕ7 5 1 Нужно, чтобы строки типа числа отсортировались по возрастанию, а следом (желательно) отсортировались смешанные данные 1 2 5 12 20 7777 ЖЕ7 ЖЕ77 G3 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 09:28 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
sfsf, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 10:39 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
sql 2008 r2 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 11:21 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
sfsfsql 2008 r2 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 11:32 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Для полноты картины добавим в исходные данные пустую строку, строку "null", строку с лидирующими пробелами и строку с русской буквой А. Варианты с try_parse и right отпадают сразу, так как дают "неправильную сортировку". Рассмотрим интересный вариант от invm и еще один вариант, использующий функцию isnumeric: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
В первом случае получим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Во втором случае получим: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Во втором случае идут в порядке возрастания числа, потом null-строки, пустые строки, строки, начинающиеся с латинской буквы и строки, начинающиеся (без учета лидирующих пробелов) с кириллической буквы. Что, наверно, более правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 15:34 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 16:21 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
А можно немного левый вопрос, но в тему: а сортировщика римских цифр ни у кого нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 16:26 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Glory, Идея хорошая, но я бы добавил SIGN(patindex('%[^0-9]%',s)) Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 16:30 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
a_voroninА можно немного левый вопрос, но в тему: а сортировщика римских цифр ни у кого нет? 5995863 Там, конечно, не про сортировку, но можно допилить таблицу преобразования римских чисел в десятичные и обратно. Тогда с ней можно было бы джойниться и сортировать целые числа ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 17:09 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Согласен, идея использования patindex('%[^0-9]%',s) и SIGN(patindex('%[^0-9]%',s)) хорошая. Теперь возникли следующие вопросы: Строка '1E02' и число 100 - это одно и тоже? Строка '-' и 0, строка '+' и 0 - это одно и тоже? Как будут сортироваться дробные числа? Строка '12.5' и число 12,5 - это одно и тоже? Если "да", то они должны попадать в секцию "числа", если "нет", то - в секцию "нечисла". В случае "да" заменим try_cast(s as int) на try_cast(s as float) и получим: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 17:31 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
a_voronin, Обычно чисел, записанных римскими цифрами, немного, скорее всего в пределах сотни. Таблица соответствия "РимскоеЧисло", "ДесятичноеЧисло" должно решить Вашу проблему без всяких преобразований. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2014, 17:38 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Добрый день. Помогите пожалуйста с сортировкой строки, состоящей ТОЛЬКО из цифр. Длина строки от 30 до 50 символов n1 132415648431321324154684867481233123123123 32354564132456574878787564541321321 5123156465145646546546546541161 в cast(n1 as bigint) не подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:25 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:29 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
JuliaYarr Добрый день. Помогите пожалуйста с сортировкой строки, состоящей ТОЛЬКО из цифр. Длина строки от 30 до 50 символов n1 132415648431321324154684867481233123123123 32354564132456574878787564541321321 5123156465145646546546546541161 в cast(n1 as bigint) не подходит. Ну и что, что строка состоит только из цифр? Она не перестаёт от этого быть строкой. И сервер прекрасно её отсортирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:29 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Кесарь JuliaYarr Добрый день. Помогите пожалуйста с сортировкой строки, состоящей ТОЛЬКО из цифр. Длина строки от 30 до 50 символов n1 132415648431321324154684867481233123123123 32354564132456574878787564541321321 5123156465145646546546546541161 в cast(n1 as bigint) не подходит. Ну и что, что строка состоит только из цифр? Она не перестаёт от этого быть строкой. И сервер прекрасно её отсортирует. Начнет с первого символа и получится 132415648431321324154684867481233123123123 32354564132456574878787564541321321 5123156465145646546546546541161 а нужно 5123156465145646546546546541161 32354564132456574878787564541321321 132415648431321324154684867481233123123123 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:47 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Oleg_SQL Кесарь пропущено... Ну и что, что строка состоит только из цифр? Она не перестаёт от этого быть строкой. И сервер прекрасно её отсортирует. Начнет с первого символа и получится 132415648431321324154684867481233123123123 32354564132456574878787564541321321 5123156465145646546546546541161 а нужно 5123156465145646546546546541161 32354564132456574878787564541321321 132415648431321324154684867481233123123123 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:50 |
|
сортировка СТРОКОВОГО поля с цифрами по возрастанию.
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Oleg_SQL пропущено... Начнет с первого символа и получится 132415648431321324154684867481233123123123 32354564132456574878787564541321321 5123156465145646546546546541161 а нужно 5123156465145646546546546541161 32354564132456574878787564541321321 132415648431321324154684867481233123123123 Вообще-то я сам за выравнивание )))), но человек пишет, что строки и так сортируются... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2021, 12:52 |
|
|
start [/forum/topic.php?fid=46&fpage=23&tid=1684665]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 148ms |
0 / 0 |