SQL Server排序奇数ASC和偶数DESC

Mis*_*Guy 2 sql t-sql sql-server select sql-order-by

我想知道SQL Server中是否有一种方法可以对包含varchar列中数字的表进行排序.我把这个号码(在我的案例中为House Numbers)投入Int并使用

order by cast([sano]%2 as int), cast([sano] as Int)
Run Code Online (Sandbox Code Playgroud)

实际上创造了2,4,6,8 ......,1,3,5,7,9等的输出.但我需要得到像2,4,6,8..9,7,5,3,1这样的输出,所以即使是asc然后奇怪的是desc.

Mur*_*nik 6

一个技巧是使用case表达式将奇数乘以-1,从而首先以升序获得具有最大绝对值的表达式:

ORDER BY CAST([sano] % 2 AS INT), 
         CAST([sano] AS INT) * CASE CAST([sano] % 2 AS INT) WHEN 0 THEN 1 ELSE -1 END
Run Code Online (Sandbox Code Playgroud)