简体   繁体   English

如何在SQL Server中对字符串进行排序

[英]How to sort string in sql server

How to sort this data in sql server as Pre-OP 1, Pre-Op 2 like wise 如何在SQL Server中像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

如果数据在数字和文本之间有空格,则可以使用以下命令:

order by cast(right(col,CHARINDEX(' ',reverse(col))) as int)

Try this: 尝试这个:

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 

I got an answer after doing a little bit of work so would like to share with you all, what are the flaws in this query. 经过一些工作后,我得到了一个答案,因此想与大家分享此查询的缺陷。 Please let me know 请告诉我

select room from m_room order by len(room), room

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

Do the sorting on the substring. 对子字符串进行排序。 It will be like Select * from Table1 order by Cast(SUBSTRING(ColumnName, 7) as INT) ASC . 就像Select * from Table1 order by Cast(SUBSTRING(ColumnName, 7) as INT) ASC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM