|
|
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Добрый день! Помогите,пожалуйста, новичку : Есть поле c именем "noname" [varchar(5)] в таблицe "name" со значениями содержащими цифру и букву - Запрос select noname from name order by noname ; Дает такой результат: "1" "10" "10a" "10c" "10d" "11" "11a" "11b" "12" "13" "14" "14b" "14c" "14d" "15" "16" "17" "18" "19" "1a" "1b" "1c" "2" "20" "20a" "20b" "21" "21a" "21b" "21c" "21d" "21e" "22" "23" "23b" "23c" "24" "24b" "25" "26" "27" "27a" "3" "30" "31" "32" "3a" "4" "40a" "40b" "41" "41b" "41c" "42a" "43" "43b" "43c" "43d" "44" "45" "45a" "45b" "45c" "45d" "4b" "4c" "4d" "4e" "5" "5a" "6" Как сделать order by так , чтобы сортировка была сначала по цифре потом по букве , то есть - 1 1a 1b 1c 2 3 3a 4 4b 4c 4d и так далее .. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 16:23 |
|
||
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Novichek_nes, сортируйте по полю, дополненнему слева пробелами до нужной длины (lpad())... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 16:53 |
|
||
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Щукина Анна, Анна , спасибо! Можете в двух словах ,пожалуйста, как поможет добавление пробелов слева к полю? Если можно в виде примера простенького ? Спасибо!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 17:29 |
|
||
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Перед дополнением слева надо убрать нечисловые символы. Как-то так: Код: plsql 1. 2. Можно и без регэкспов, но будет выглядеть более громоздко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 18:13 |
|
||
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Novichek_nes, <=== или такой вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 19:33 |
|
||
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Щукина АннаNovichek_nes, <=== или такой вариант: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. Хотя, для сортировки по буквенной части можно использовать и саму исходную строку, без преобразований: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 19:39 |
|
||
|
Order by по полю со значениями 1,1а,1b,2,2a,3 и так далее..
|
|||
|---|---|---|---|
|
#18+
Ребята, спасибо большое! Предложенные вами примеры привели меня к селекту типа - select noname from name ORDER BY regexp_replace(noname, '\D', '')::integer, regexp_replace(noname, '\d', ''); Который выдает нужный мне дата сет : 1 1a 1b 1c 2 3 3a 4 4b 4c 4d 4e 5 5a 6 7 7a 8 8a 8b 8c 8e 9 10 10a 10c 10d 11 11a 11b 12 13 14 14b 14c 14d 15 16 17 18 19 20 20a 20b 21 21a 21b 21c 21d 21e 22 23 23b 23c 24 24b 25 26 27 27a 30 31 32 40a 40b 41 41b 41c 42a 43 И так далее ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 08:48 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39207121&tid=1997317]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 293ms |
| total: | 563ms |

| 0 / 0 |
