Как сделать буквенно-цифровую сортировку - PullRequest
0 голосов
/ 19 апреля 2019

Ниже приведены мои данные

Transmitter #1
Transmitter #10
Transmitter #11
Transmitter #2
Transmitter #3
Transmitter #4
Transmitter #5
Transmitter #6
Transmitter #7
Transmitter #8
Transmitter #9
Room 1 Transmitter
Allergy Guard – 1
Allergy Guard – 2
Allergy Guard – 3
Deli Counter

Как отсортировать эти данные как буквенно-цифровые.

SELECT * FROM #table 
ORDER BY 
Name,
CASE 
    WHEN 
    patindex('%[0-9]%',substring(Name,len(Name),LEN(Name))) =1 
  THEN
        cast(substring(Name,patindex('%[0-9]%', Name),len(Name)) as int)
  END

1 Ответ

0 голосов
/ 19 апреля 2019

Следующие ключи должны отсортировать их в том порядке, в котором вы хотите:

  • Сортировка по всему количеству перед первым номером (если есть)
  • Затем по длине по возрастанию
  • Тогда значение возрастает

Итак:

order by left(name, patindex('%[0-9]%', name + '0') - 1),
         len(name),
         name

Здесь - это дБ <> скрипка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...