首页 > 解决方案 > 对 SQL Server 中包含数字的 VARCHAR 列进行排序?

问题描述

我有一列,其中数据有带数字的字母。

例如:

1 name
2 names .... 
100 names

对这些数据进行排序时,它没有正确排序,我该如何解决这个问题?我提出了一个请求,但它没有正确排序。

select name_subagent
from Subagent
order by 
    case IsNumeric(name_subagent) 
        when 1 then Replicate('0', 100 - Len(name_subagent)) + name_subagent
        else name_subagent
end  

在此处输入图像描述

标签: sqlsql-serversql-server-2008

解决方案


这应该工作

select name_subagent
from Subagent
order by CAST(LEFT(name_subagent, PATINDEX('%[^0-9]%', name_subagent + 'a') - 1) as int)

推荐阅读