数据库查询结果的动态排序(7)

skxlkm

skxlkm

2016-01-29 16:19

数据库查询结果的动态排序(7),数据库查询结果的动态排序(7)
  三、用列号作为参数


  就象第一个方案所显示地那样,你也许更喜欢用列的编号作为参数,而不是使用列的名字(列的编号即一个代表你想要作为排序依据的列的数字)。这种方法的基本思想与使用列名字作为参数的思想一样:CASE表达式根据指定的列号确定使用哪一个列进行排序。Listing 7显示了修改后的GetSortedShippers存储过程。



【Listing 7:用列号作为参数】


ALTER PROC GetSortedShippers

@ColNumber AS int

AS


SELECT *

FROM Shippers

ORDER BY

CASE @ColNumber

WHEN 1 THEN CASE SIGN(ShipperID)

WHEN -1 THEN '-'

WHEN 0 THEN '+'

WHEN 1 THEN '+'

ELSE NULL

END +

RIGHT(REPLICATE('0', 10) +

CAST(ABS(ShipperID) AS varchar(10)), 10)

WHEN 2 THEN CompanyName

WHEN 3 THEN Phone

ELSE NULL

END





  当然,在这里你也可以使用Richard的方法,避免ORDER BY子句中列数据类型带来的问题。如果要根据ShipperID排序输出,你可以按照下面的方式调用修改后的GetSortedShippers存储过程:



EXEC GetSortedShippers 1

 
展开更多 50%)
分享

猜你喜欢

数据库查询结果的动态排序(7)

SQLServer
数据库查询结果的动态排序(7)

数据库查询结果的动态排序(6)

SQLServer
数据库查询结果的动态排序(6)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

数据库查询结果的动态排序(2)

SQLServer
数据库查询结果的动态排序(2)

数据库查询结果的动态排序(4)

SQLServer
数据库查询结果的动态排序(4)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

数据库查询结果的动态排序(1)

SQLServer
数据库查询结果的动态排序(1)

数据库查询结果的动态排序(5)

SQLServer
数据库查询结果的动态排序(5)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《全民英雄》攻略之最新的刷卡方法介绍

《全民英雄》攻略之最新的刷卡方法介绍

巧妙运用 IP安全策略保护重要数据

巧妙运用 IP安全策略保护重要数据
下拉加载更多内容 ↓