case的两种表现方式和使用.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
case的两种表现方式和使用

CASE语句在某些方面,CASE语句是几种不同语句的一种等价物,这些语句来自你之前学过的语言。在过程化的编程语言中,下面的语句与CASE的功能相似:Switch: C、C++、C#、DelphiSelect Case:Visual BasicDo Case:XbaseEvaluate:COBOL我可以肯定还有其他语句,它们来自我多年前以这种或那种形式使用的语言。在许多方面,在T-SQL中使用CASE语句的最大缺陷是置换运算符而不是流控制语句。书写CASE语句的方法不止一种:可以使用输入表达式或布尔表达式。第一种选择是可以使用一个输入表达式,将它与每一个WHEN子句中使用的值进行比较。SQL Server将其视为简单CASE:CASE?input?expression?WHEN?when?expression?THEN?result?expression?[...n] ?[ELSE?result?expression] ?END?第二种选择是为每个WHEN子句提供一个表达式(计算结果为TRUE/FALSE)。文档将其视为有哪些信誉好的足球投注网站CASE:CASE ?WHEN?Boolean?expression?THEN?result?expression?[...n] ?[ELSE?result?expression] ?END?或许CASE最大的好处是可以在SELECT语句里内联地(即,作为完整的部分)使用它。这一功能绝对是非常强大的。1. 简单CASE简单CASE使用一个可以得到布尔值结果的表达式。下面看一个例子:USE?AdventureWorks2008; ?GO ??SELECT?TOP?10?SalesOrderID,?SalesOrderID?%?10?AS?Last?Digit,?Position?=? ?CASE?SalesOrderID?%?10 ?WHEN?1?THEN?First ?WHEN?2?THEN?Second ?WHEN?3?THEN?Third ?WHEN?4?THEN?Fourth ?ELSE?Something?Else ?END ?FROM?Sales.SalesOrderHeader;?对于那些你还不熟悉的内容,%运算符用于取模。取模的工作方式与被除(/)相似,不过它得到的只是余数。因此,16%4=0(16可以被4整除),不过16%5=1(16除以5余数为1)。在本例中,既然我们要将该值除以10,使用取模来得到的是要计算数据的末位数。下面看一下返回结果:SalesOrderID?Last?Digit?Position ?------------?-----------?-------------- ?75124?4??Fourth ?43793?3??Third ?51522?2??Second ?57418?8??Something?Else ?43767?7??Something?Else ?51493?3??Third ?72773?3??Third ?43736?6??Something?Else ?51238?8??Something?Else ?53237?7??Something?Else ??(10?row(s)?affected)?注意,无论何时只要这张表中有匹配的数据值,就会调用THEN子句。既然我们有一个ELSE子句,任何与之前的值不匹配的值都会被赋予在ELSE中指定的值分配新值。如果不使用ELSE,那么任何此类值都可能被赋予NULL值。下面再举一个例子扩展说明可以用作表达式的事物。这一次,我们将在查询中使用另外的列:USE?AdventureWorks2008; ?GO ??SELECT?TOP?10?SalesOrderID?%?10?AS?OrderLastDigit, ?ProductID?%?10?AS?ProductLastDigit, ?How?Close??=?CASE?SalesOrderID?%?10 ?WHEN?ProductID?%?1?THEN?Exact?Match! ?WHEN?ProductID?%?1?-?1?THEN?Within?1 ?WHEN?ProductID?%?1?+?1?THEN?Within?1 ?ELSE?More?Than?One?Apart ?END ?FROM?Sales.SalesOrderDetail ?ORDER?BY?SalesOrderID?DESC;?注意,本例的每一步都使用了表达式,不过它一样正常工作……OrderLastDigit?ProductLastDigit?How?Close? ?--------------?----------------?------------------- ?4?5??Mor

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档