利用 Case 敘述做 SQL 的動態排列

2016-01-29 17:06 10 1 收藏

利用 Case 敘述做 SQL 的動態排列,利用 Case 敘述做 SQL 的動態排列

【 tulaoshi.com - SQLServer 】

SQL Server 在讀取資料時是採用隨機的方式, 所以使用者會用 Order 子句來做資料排列, 在這篇文章當中咱叨要來進一步介紹按怎使用 Case 來做動態的排列

Order By 子句

咱先來看麥一般使用 Select 的結果, 在這篇文章的例咱會使用 SQL Server 的北風資料庫, 請打開 Query Analyzer, 執行

Use Northwind
Go
Select CompanyName, ContactName, ContactTitle
From Customers

執行的結果可能是按照資料輸入的時間來排列, 哪是你要照自己的規則來排, 你叨需要用到 Order By 子句, 譬如講前一個例, 你哪是要照公司名來排叨要按呢做

Select CompanyName, ContactName, ContactTitle
From Customers
Order By CompanyName

Case 敘述

Case 敘述適用來控制程式的流向, 所以咱叨要利用 Case 敘述來做 T-SQL 的邏輯控制, 來看麥 Case 的語法

Case <input expression
When <when expression Then <result expression
[...n]
[Else <result expression]

光看語法不夠, 現在用一個例來學練一下, 同款地咱還是用北風資料庫, 假設咱們要將職員 (Employees) 資料表中的英文稱呼改做台灣式, 可以按呢做

select FirstName, TitleOfCourtesy, CourtesyInTC =
  Case TitleOfCourtesy
    When 'Ms.' Then '水姑娘'
    When 'Dr.' Then '博士博'
    When 'Mr.' Then '先仔'
    When 'Mrs.' Then '女士'
    Else '先生/小姐'
  End
From employees

動態排列

了解了基本語法後咱們就可以開始學習按怎利用 Order By 加上 Case 敘述來做動態的資料排列

Declare @OrderKey TinyInt
Set @OrderKey = 2
  
Select CompanyName, ContactName, ContactTitle
From Customers
Order By Case
  When @OrderKey = 1 Then CompanyName
  When @OrderKey = 2 Then ContactName
  Else ContactTitle
End

不過這親像還不太實用, 至少在 ASP 中, 所以接下來咱來做一個預儲程序

Create Procedure sp_SelectCustomersDynamicOrder
@OrderKey = Null
As
Select CompanyName, ContactName, ContactTitle
From Customers
Order By Case
  When @OrderKey = 1 Then CompanyName
  When @OrderKey = 2 Then ContactName
  Else ContactTitle
End

現在你就可以在直接呼叫這個 Stored Procedure

exec sp_SelectCustomersDynamicOrder
exec sp_SelectCustomersDynamicOrder 1
exec sp_SelectCustomersDynamicOrder 2

按呢是不是友善多了

希望這篇文章對你有幫助! 
       

来源:http://www.tulaoshi.com/n/20160129/1500339.html

延伸阅读
标签: ASP
  学asp也有一段时间了,这几天一直在写自己的程序,也遇到了好多问题,我就不得不得考虑到一些现在的漏洞,比如,‘ 或 and 1=1等等的一些漏洞!别的先不管,今天我就来说说如何堵这个漏洞! 记得看了一篇文章(不记得什么时候看的了),他用到了instr这个函数,具体的应该是这样的。 If instr(Request("id")," ")0 or instr(...
本文转自 IBM developerWorks 中国网站 EJB 体系结构的历史和目标 本文概述 Enterprise JavaBeans (EJB) 技术,旨在让读者快速理解基本概念。第 1 部分讲述 EJB 技术的历史和某些目标、优点和技术。为了简洁明了,有选择地讲述EJB 技术的一些要害要素。请注重,虽然 EJB 组件依靠于一些基础的 Java 服务(如 Java T...
那一刻,我的心跳到了嗓子眼。 运行建立帐号命令,OK! 远程登录,输入帐号,密码,OK!终于又进去了! ××××××××××××××××××× 我忽然发现,数据库服务器登录不了了。 提示帐号密码过期。按提示修改,提交,又说我没权限修改密码! CNM,这样来害我。这个帐号属于administrators,原先那个默认的administrator被我停掉了...
标签: 电脑入门
我们常说文不如字,字不如图,在PPT中插入图片可使得页面瞬间鲜活起来,摆脱满篇文字的枯燥与乏味。 PPT中图片的排列与布局,也关系到PPT页面的整体视觉印象,下面分享几组近期遇到的实际案例。 (注:以下均为实际案例,模板已替换。页面关键信息已做替换,文字位置保留) 常规图文有序混排 案例1:优化前的PPT(before) 页面保留了商务p...
标签: Web开发
我很年轻,还没有做过很长的编程。所以我对使用switch-case 语法没有什么很深刻的印象,至少在我的记忆中是这样。或许你认为这是一件坏事情。你甚至会怀疑我为什么不使用它们。我真的不知道为什么,似乎我天生就不喜欢使用它,如下所示: switch (something) {case 1:doX();break;case 2:doY();break;case 3:doN();break;// And so on...}...

经验教程

635

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部