利用CASE?述做SQL的??排列
类别: 数据库教程
SQL Server 在坐取儋料?r是?裼秒S?C的方式, 所以使用者??用 Order 子句?碜鲑Y料排列, 在呃篇文章??中咱叨要?磉M一
步介铰按怎使用 Case ?碜????B的排列
Order By 子句
咱先?砜贷?一般使用 Select 的劫果, 在呃篇文章的例咱??使用 SQL Server 的北锾儋料?飕 ??打檫 Query Analyzer, ?碳br> 行
Use Northwind
Go
Select CompanyName, ContactName, ContactTitle
From Customers
?绦械慕Y果可能是按照儋料??入的?r殓?砼帕鞋 哪是你要照自己的???t?砼努 你叨需要用到 Order By 子句, 譬如嘱前一
??例, 你哪是要照公司名?砼胚兑?按呢做
Select CompanyName, ContactName, ContactTitle
From Customers
Order By CompanyName
Case ?⑹黾br>
Case ?⑹鲞m用?砜刂瞥淌降牧飨颥 所以咱叨要利用 Case ?⑹??碜? T-SQL 的????控制, ?砜贷? Case 的遮法
Case <input expression>
When <when expression> Then <result expression>
[...n]
[Else <result expression>]
光看遮法不?颥 ?F在用一??例???W??一下, 同款地咱??是用北锾儋料?飕 假韵咱??要?⒙??T (Employees) 儋料表中的英文
费呼改做台?呈浆 可以按呢做
select FirstName, TitleOfCourtesy, CourtesyInTC =
Case TitleOfCourtesy
When \'Ms.\' Then \'水姑娘\'
When \'Dr.\' Then \'博士博\'
When \'Mr.\' Then \'先仔\'
When \'Mrs.\' Then \'女士\'
Else \'先生/小姐\'
End
From employees
???B排列
了解了基本遮法後咱??就可以檫始?W??按怎利用 Order By 加上 Case ?⑹??碜????B的儋料排列
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 中, 所以接下?碓??碜鲆???盍?Τ绦蚣br>
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
?F在你就可以在直接呼叫呃?? Stored Procedure
exec sp_SelectCustomersDynamicOrder
exec sp_SelectCustomersDynamicOrder 1
exec sp_SelectCustomersDynamicOrder 2
步介铰按怎使用 Case ?碜????B的排列
Order By 子句
咱先?砜贷?一般使用 Select 的劫果, 在呃篇文章的例咱??使用 SQL Server 的北锾儋料?飕 ??打檫 Query Analyzer, ?碳br> 行
Use Northwind
Go
Select CompanyName, ContactName, ContactTitle
From Customers
?绦械慕Y果可能是按照儋料??入的?r殓?砼帕鞋 哪是你要照自己的???t?砼努 你叨需要用到 Order By 子句, 譬如嘱前一
??例, 你哪是要照公司名?砼胚兑?按呢做
Select CompanyName, ContactName, ContactTitle
From Customers
Order By CompanyName
Case ?⑹黾br>
Case ?⑹鲞m用?砜刂瞥淌降牧飨颥 所以咱叨要利用 Case ?⑹??碜? T-SQL 的????控制, ?砜贷? Case 的遮法
Case <input expression>
When <when expression> Then <result expression>
[...n]
[Else <result expression>]
光看遮法不?颥 ?F在用一??例???W??一下, 同款地咱??是用北锾儋料?飕 假韵咱??要?⒙??T (Employees) 儋料表中的英文
费呼改做台?呈浆 可以按呢做
select FirstName, TitleOfCourtesy, CourtesyInTC =
Case TitleOfCourtesy
When \'Ms.\' Then \'水姑娘\'
When \'Dr.\' Then \'博士博\'
When \'Mr.\' Then \'先仔\'
When \'Mrs.\' Then \'女士\'
Else \'先生/小姐\'
End
From employees
???B排列
了解了基本遮法後咱??就可以檫始?W??按怎利用 Order By 加上 Case ?⑹??碜????B的儋料排列
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 中, 所以接下?碓??碜鲆???盍?Τ绦蚣br>
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
?F在你就可以在直接呼叫呃?? Stored Procedure
exec sp_SelectCustomersDynamicOrder
exec sp_SelectCustomersDynamicOrder 1
exec sp_SelectCustomersDynamicOrder 2
- 上一篇: SQL SERVER中单引号的两种处理技巧
- 下一篇: MYSQL的数据类型和建库策略
-= 资 源 教 程 =-
文 章 搜 索