域名注册|域名申请|域名空间|空间租用|虚拟主机租用
118 繁體中文 118 联系我们    118 关于我们    118 帮助中心    118 提问留言    118 显示在线咨询
118
118
虚拟主机

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

MSSQL数据库 点击次数:997

三、用列号作为参数


  就象第一个方案所显示地那样,你也许更喜欢用列的编号作为参数,而不是使用列的名字(列的编号即一个代表你想要作为排序依据的列的数字)。 这种方法的基本思想与使用列名字作为参数的思想一样: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

欢迎转载《数据库查询结果的动态排序(7)》,请保留出处。
返回首页 | 关于我们 | 联系我们 | 付款方式118 | 帮助中心 | 提问帮助 | 中域互联招聘 网站地图 节日祝福
客服1号:619086478 客服2号:759043498 客服3号:419602084 客服4号:707187709
技术1号:502825590 技术2号:609223275 技术3号:347054506 网站备案:626709096
电话:020-32676839、32696039、32651958 传真:020-32677208 邮件和MSN:service@118cy.net 118
广州市炬正通信技术有限公司 地址:广州市黄埔大道中员村白马岗街艾琳大楼406 邮编:510655 
《中华人民共和国增值电信业务经营许可证》ISP证编号:粤B2-20080048  粤ICP备07025283号
营业执照