Как отсортировать строку в SQL Server - PullRequest
2 голосов
/ 06 августа 2010

Как отсортировать эти данные на сервере SQL как Pre-OP 1, Pre-Op 2, как мудрый

Pre-OP 1
Pre-OP 10
Pre-OP 11
Pre-OP 12
Pre-OP 13
Pre-OP 14
Pre-OP 15
Pre-OP 16
Pre-OP 17
Pre-OP 18
Pre-OP 19
Pre-OP 2
Pre-OP 20
Pre-OP 21
Pre-OP 22
Pre-OP 23
Pre-OP 24
Pre-OP 25
Pre-OP 26
Pre-OP 27
Pre-OP 28
Pre-OP 29
Pre-OP 3
Pre-OP 30
Pre-OP 4
Pre-OP 5
Pre-OP 6
Pre-OP 7
Pre-OP 8
Pre-OP 9

Ответы [ 5 ]

2 голосов
/ 06 августа 2010

Если данные содержат пробел между числом и текстом, вы можете использовать следующее:

order by cast(right(col,CHARINDEX(' ',reverse(col))) as int)
1 голос
/ 11 ноября 2012

Попробуйте это:

Order BY 
    CASE WHEN isnumeric(emp_id) = '1' THEN cast (emp_id AS int) 
         WHEN isnumeric(substring(emp_id, 3, 7))=1 THEN cast (substring(emp_id, 3, 7) AS int) 
         ELSE '99999999'
    END 
1 голос
/ 06 августа 2010

ORDER BY CAST(REPLACE(str, 'Pre-OP ', '') AS INT)

1 голос
/ 06 августа 2010

Я получил ответ после небольшой работы, поэтому хотел бы поделиться со всеми вами, каковы недостатки этого запроса. Пожалуйста, дайте мне знать

select room from m_room order by len(room), room
0 голосов
/ 06 августа 2010

Выполнить сортировку по подстроке. Это будет похоже на Select * from Table1 order by Cast(SUBSTRING(ColumnName, 7) as INT) ASC.

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