如何根据SQL Server中的数据长度对列进行排序

use*_*270 1 sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

众所周知,一般排序是使用order by.我想要执行的那种不同.我希望表格n中间的最小长度值是其顶部和底部的最大长度值.一半应该是下降,另一半应该是上升.你们能帮忙吗?这是一个面试问题.

Lam*_*mak 9

这是一种方式:

;WITH CTE AS
(
    SELECT  *, 
            RN = ROW_NUMBER() OVER(ORDER BY LEN(YourColumn))
    FROM dbo.YourTable
)
SELECT *
FROM CTE
ORDER BY RN%2, (CASE WHEN RN%2 = 0 THEN 1 ELSE -1 END)*RN DESC
Run Code Online (Sandbox Code Playgroud)