在desc oder中使用Alpha数字数据对列进行排序

时间:2017-03-07 10:15:09

标签: sql sorting sql-server-2008-r2

我需要使用SQL查询按降序对列进行排序 我使用了常规方法

protected $subscribe = [
   'App\Listeners\HandleClient',
 ];

但是无法获得预期结果,下面给出的样本数据

示例数据

Sample Data:

预期结果

Expected Result:

2 个答案:

答案 0 :(得分:1)

使用LEFTRIGHTCHARINDEX字符串函数的组合将字符串拆分为两个。然后根据这两个值进行排序。

<强>查询

select t.[Id], t.[SerialNo] from(
    select [Id], [SerialNo], 
    left([SerialNo], charindex(' - ', [SerialNo], 1) - 1) [new_col1],
    right([SerialNo], charindex(' - ', reverse([SerialNo]), 1) - 1) [new_col2]
    from [your_table_name]
)t
order by len(t.[new_col1]) desc, t.new_col1 desc, cast(t.[new_col2] as int) desc;

您还可以更改order by子句,

order by len(t.[new_col1]) desc, t.[new_col1] desc, 
         len(t.[new_col2]) desc, t.[new_col2] desc;

<强> Find demo here

答案 1 :(得分:0)

Select * from tableName order by columnName1 desc,SUBSTRING(columnName2,1)*1 desc