Как отсортировать буквенно-цифровой столбец из SQL Server с C #? - PullRequest
2 голосов
/ 20 апреля 2019

У меня есть некоторые данные, хранящиеся в SQL Server, например:

A1
A2
A3
1A
2A
3A

Как их отсортировать?

Я пробовал этот запрос:

select name
from Analyze_Table
group by name
order by CONVERT(INT, LEFT(name, PATINDEX('%[^0-9]%', name+'z')-1)),name

, но этосортирует только по первому номеру и после алфавита и не сортирует по алфавиту и после чисел

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Я пытался отсортировать только по числовой части имени, исключая первый или последний символ.Затем, если есть 2 с одинаковым номером, они будут отсортированы снова, например, 23 и 23A.Это должно дать вам результат, который вы искали

select name
from Analyze_Table
group by name
order by case 
  when isnumeric(name) = 1 then cast(name as int)
  when isnumeric(left(name, 1)) = 0 and isnumeric(right(name, 1)) = 0 then cast(substring(name, 2, len(name)-2) as int)
  when isnumeric(left(name, 1)) = 0 then cast(right(name, len(name)-1) as int)
  when isnumeric(right(name, 1)) = 0 then cast(left(name, len(name)-1) as int) end
  ,name
0 голосов
/ 20 апреля 2019

Если вы хотите, чтобы имена начинались с цифр, то это то, что вы?

order by (case when name like '[0-9]%' then 1 else 2 end),
         name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...