简体   繁体   English

SQL Server 中的字母数字和数字排序

[英]Alphanumeric and Numeric sorting in SQL Server

I need to apply sorting on Alphanumeric and Numeric sorting.我需要对字母数字和数字排序应用排序。

Example:例子:

319,
519, 
620, 
1154, 
1195, 
319lov,
319, 
620lov

I need result like:我需要这样的结果:

319,
319,
319lov,
519, 
620, 
620lov,
1154, 
1195, 

I have applied following code to sort:我已应用以下代码进行排序:

SELECT Name 
FROM TableName
ORDER BY CAST(CASE
                 WHEN Name LIKE '[0-9][0-9][0-9][0-9]%' THEN LEFT(Name ,4)
                 WHEN Name LIKE '[0-9][0-9][0-9]%' THEN LEFT(Name ,3)
                 ELSE NULL 
              END AS INT)

Got result like:得到如下结果:

319,
319lov,
319,
519, 
620,
620lov, 
1154, 
1195,  
SELECT name FROM t 
ORDER BY CONVERT(INT, LEFT(name, PATINDEX('%[^0-9]%', name+'z')-1)),name;

You order by all the numbers up to the first non number,the letter is in there to treat all strings the same.您按所有数字排序,直到第一个非数字,字母在其中以相同的方式处理所有字符串。

FIDDLE小提琴

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

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