??xml version="1.0" encoding="utf-8" standalone="yes"?>污视频免费在线看,中文字幕亚洲在线,91久久久久久久久久久久久http://www.aygfsteel.com/tinguo002/category/52374.htmlzh-cnFri, 27 Sep 2013 07:45:18 GMTFri, 27 Sep 2013 07:45:18 GMT60left join加上where条g的困?/title><link>http://www.aygfsteel.com/tinguo002/archive/2013/09/23/404331.html</link><dc:creator>一堣而安</dc:creator><author>一堣而安</author><pubDate>Mon, 23 Sep 2013 08:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/tinguo002/archive/2013/09/23/404331.html</guid><wfw:comment>http://www.aygfsteel.com/tinguo002/comments/404331.html</wfw:comment><comments>http://www.aygfsteel.com/tinguo002/archive/2013/09/23/404331.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tinguo002/comments/commentRss/404331.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tinguo002/services/trackbacks/404331.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="content-head clearfix">原文Q?a >http://hi.baidu.com/dianai2001/item/6c2ddd844a80ced45e0ec136</a><br /><div id="wmqeeuq" class="content-other-info"><span>2009-12-31 10:26</span> </div><br /><h2 class="title content-title">left join加上where条g的困?/h2></div><br /><div class="wmqeeuq" id="content" class="content mod-cs-content text-content clearfix"><br /><p>left join的困惑:一旦加上where条gQ则昄的结果等于inner join</p><br /><p>where 换成 and  </p><br /><p>用where 是先q接然后再筛?nbsp;  <br />用and 是先{选再q接</p><br /><p>数据库在通过q接两张或多张表来返回记录时Q都会生成一张中间的临时表,然后再将q张临时表返回给用户?/p><br /><p>      在用left jionӞon和where条g的区别如下:</p><br /><p>1?on条g是在生成临时表时使用的条Ӟ它不on中的条g是否为真Q都会返回左边表中的记录?/p><br /><p>2、where条g是在临时表生成好后,再对临时表进行过滤的条g。这时已l没有left <br />join的含义(必须q回左边表的记录Q了Q条件不为真的就全部qo掉?/p><br /><p>       假设有两张表Q?/p><br /><p>? tab1Q?/p><br /><p>id size</p><br /><p>1 10</p><br /><p>2 20</p><br /><p>3 30</p><br /><p>? tab2Q?/p><br /><p>size name</p><br /><p>10 AAA</p><br /><p>20 BBB</p><br /><p>20 CCC</p><br /><p><br />两条SQL:<br />1、select * form tab1 left join tab2 on (tab1.size = tab2.size) <br />where tab2.name=’AAA’<br />2、select * form tab1 left join tab2 on (tab1.size = <br />tab2.size and tab2.name=’AAA’)</p><br /><p>W一条SQL的过E:</p><br /><p>1、中间表<br />on条g: <br />tab1.size = tab2.size</p><br /><p>tab1.id    tab1.size    tab2.size     tab2.name</p><br /><p>1               10                   10               AAA</p><br /><p>2              20                     20             BBB</p><br /><p>2             20                      20               CCC</p><br /><p>3             30                    (null)              (null)</p><br /><p>2、再对中间表qo<br />where 条gQ?br />tab2.name=’AAA’</p><br /><p>tab1.id       tab1.size        tab2.size     tab2.name</p><br /><p>1                  10                  10              AAA</p><br /><p><br />W二条SQL的过E:</p><br /><p>1、中间表<br />on条g: <br />tab1.size = tab2.size and <br />tab2.name=’AAA’<br />(条g不ؓ真也会返回左表中的记?</p><br /><p>tab1.id      tab1.size         tab2.size       tab2.name</p><br /><p>1               10                     10                   AAA</p><br /><p>2               20                   (null)               (null)</p><br /><p>3               30                    (null)                 (null)</p><br /><p>     其实以上l果的关键原因就是left join,right join,full <br />join的特D性,不管on上的条g是否为真都会q回left或right表中的记录,full则具有left和right的特性的q?而inner <br />jion没这个特D性,则条件放在on中和where中,q回的结果集是相同的?/p></div><img src ="http://www.aygfsteel.com/tinguo002/aggbug/404331.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tinguo002/" target="_blank">一堣而安</a> 2013-09-23 16:09 <a href="http://www.aygfsteel.com/tinguo002/archive/2013/09/23/404331.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Access 日期函数http://www.aygfsteel.com/tinguo002/archive/2012/12/12/392883.html一堣而安一堣而安Wed, 12 Dec 2012 08:58:00 GMThttp://www.aygfsteel.com/tinguo002/archive/2012/12/12/392883.htmlhttp://www.aygfsteel.com/tinguo002/comments/392883.htmlhttp://www.aygfsteel.com/tinguo002/archive/2012/12/12/392883.html#Feedback0http://www.aygfsteel.com/tinguo002/comments/commentRss/392883.htmlhttp://www.aygfsteel.com/tinguo002/services/trackbacks/392883.htmlAsh ♛

来自: Ash ♛(http://winterfell.tk) 2010-06-20 16:24:14



一堣而安 2012-12-12 16:58 发表评论
]]>
SQLServer和Oracle的常用函数对?/title><link>http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392229.html</link><dc:creator>一堣而安</dc:creator><author>一堣而安</author><pubDate>Thu, 29 Nov 2012 13:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392229.html</guid><wfw:comment>http://www.aygfsteel.com/tinguo002/comments/392229.html</wfw:comment><comments>http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tinguo002/comments/commentRss/392229.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tinguo002/services/trackbacks/392229.html</trackback:ping><description><![CDATA[<div><div id="wmqeeuq" class="content-head clearfix"><br /><div id="wmqeeuq" class="content-other-info"><span>2008-05-27 10:32</span> </div>转蝲自:<a >http://hi.baidu.com/zhoudz_jxdy/item/5e6dd8d0700ac5be33db901e</a><br /><h2 class="title content-title">SQLServer和Oracle的常用函数对?/h2></div><br /><div class="wmqeeuq" id="content" class="content mod-cs-content text-content clearfix">SQLServer和Oracle的常用函数对? <p>帮别人写SQL Server的程序很多函数我不知道Oracle对应的怎么转换到SQL Server上,|上查到一下资料堪U雪中送炭。管用SQL <br />Server 我能作的实在太少。唉Q真不知道ؓ什么这么不开D我写SQL Server的存储过E?/p><br /><p>---------数学函数</p><br /><p>  1.l对?<br />  S:select abs(-1) value<br />  O:select abs(-1) value from <br />dual</p><br /><p>  2.取整(? <br />  S:select ceiling(-1.001) value <br />  O:select ceil(-1.001) <br />value from dual</p><br /><p>  3.取整Q小Q?<br />  S:select floor(-1.001) value <br />  O:select floor(-1.001) <br />value from dual</p><br /><p>  4.取整Q截取)<br />  S:select cast(-1.002 as int) value <br />  O:select <br />trunc(-1.002) value from dual </p><br /><p>  5.四舍五入<br />  S:select round(1.23456,4) value 1.23460<br />  O:select <br />round(1.23456,4) value from dual 1.2346</p><br /><p>  6.e为底的幂 <br />  S:select Exp(1) value 2.7182818284590451 <br />  O:select <br />Exp(1) value from dual 2.71828182</p><br /><p>  7.取e为底的对?br />  S:select log(2.7182818284590451) value 1<br />  O:select <br />ln(2.7182818284590451) value from dual; 1</p><br /><p>  8.?0为底Ҏ<br />  S:select log10(10) value 1<br />  O:select log(10,10) value <br />from dual; 1</p><br /><p>  9.取^?br />  S:select SQUARE(4) value 16<br />  O:select power(4,2) value from <br />dual 16</p><br /><p>  10.取^Ҏ<br />  S:select SQRT(4) value 2<br />  O:select SQRT(4) value from dual <br />2</p><br /><p>  11.求Q意数为底的幂<br />  S:select power(3,4) value 81<br />  O:select power(3,4) <br />value from dual 81</p><br /><p>  12.取随机数<br />  S:select rand() value <br />  O:select <br />sys.dbms_random.value(0,1) value from dual;</p><br /><p>  13.取符?br />  S:select sign(-8) value -1<br />  O:select sign(-8) value from <br />dual -1<br />  ----------数学函数</p><br /><p>  14.圆周?br />  S:SELECT PI() value 3.1415926535897931<br />  O:不知?/p><br /><p>  15.sin,cos,tan 参数都以弧度为单?br />  例如Qselect sin(PI()/2) value <br />得到1QSQLServerQ?/p><br /><p>  16.Asin,Acos,Atan,Atan2 q回弧度</p><br /><p>  17.弧度角度互换(SQLServerQOracle不知?<br />  DEGREESQ弧?〉角?br />  RADIANSQ角?〉弧?/p><br /><p>  ---------数值间比较</p><br /><p>  18. 求集合最大?br />  S:select max(value) value from <br />  (select 1 <br />value<br />  union<br />  select -2 value<br />  union<br />  select 4 <br />value<br />  union<br />  select 3 value)a</p><br /><p>  O:select greatest(1,-2,4,3) value from dual</p><br /><p>  19. 求集合最?br />  S:select min(value) value from <br />  (select 1 <br />value<br />  union<br />  select -2 value<br />  union<br />  select 4 <br />value<br />  union<br />  select 3 value)a</p><br /><p>  O:select least(1,-2,4,3) value from dual</p><br /><p>  20.如何处理null?F2中的null?0代替)<br />  S:select F1,IsNull(F2,10) value from <br />Tbl<br />  O:select F1,nvl(F2,10) value from Tbl</p><br /><p>  --------数值间比较</p><br /><p>  21.求字W序?br />  S:select ascii('a') value<br />  O:select ascii('a') value from <br />dual</p><br /><p>  22.从序h字符<br />  S:select char(97) value<br />  O:select chr(97) value from <br />dual</p><br /><p>  23.q接<br />  S:select '11'+'22'+'33' value<br />  O:select <br />CONCAT('11','22')||33 value from dual</p><br /><p>  23.子串位置 --q回3<br />  S:select CHARINDEX('s','sdsq',2) value <br />  O:select <br />INSTR('sdsq','s',2) value from dual</p><br /><p>  23.模糊子串的位|?--q回2,参数L中间%则返?<br />  S:select patindex('%d%q%','sdsfasdqe') <br />value <br />  O:oracle没发玎ͼ但是instr可以通过W四N 刂瞥鱿执?BR>  select <br />INSTR('sdsfasdqe','sd',1,2) value from dual q回6</p><br /><p>  24.求子?br />  S:select substring('abcd',2,2) value <br />  O:select <br />substr('abcd',2,2) value from dual</p><br /><p>  25.子串代替 q回aijklmnef<br />  S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') <br />value<br />  O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual</p><br /><p>  26.子串全部替换<br />  S:没发?br />  O:select Translate('fasdbfasegas','fa','? ) <br />value from dual</p><br /><p>  27.长度<br />  S:len,datalength<br />  O:length</p><br /><p>  28.大小写{?lower,upper</p><br /><p>  29.单词首字母大?br />  S:没发?br />  O:select INITCAP('abcd dsaf df') value from <br />dual</p><br /><p>  30.左补I格QLPAD的第一个参CؓI格则同space函数Q?br />  S:select space(10)+'abcd' <br />value<br />  O:select LPAD('abcd',14) value from dual</p><br /><p>  31.双I格QRPAD的第一个参CؓI格则同space函数Q?br />  S:select 'abcd'+space(10) <br />value<br />  O:select RPAD('abcd',14) value from dual</p><br /><p>  32.删除I格<br />  S:ltrim,rtrim<br />  O:ltrim,rtrim,trim</p><br /><p>  33. 重复字符?br />  S:select REPLICATE('abcd',2) value <br />  O:没发?/p><br /><p>  34.发音怼性比?q两个单词返回gP发音相同)<br />  S:SELECT SOUNDEX ('Smith'), SOUNDEX <br />('Smythe')<br />  O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from <br />dual<br />  SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') <br />比较soundex的差<br />  q回0-4Q?为同韻I1最?/p><br /><p>  --------------日期函数</p><br /><p>  35.pȝ旉<br />  S:select getdate() value<br />  O:select sysdate value from <br />dual</p><br /><p>  36.前后几日<br />  直接与整数相加减</p><br /><p>  37.求日?br />  S:select convert(char(10),getdate(),20) value<br />  O:select <br />trunc(sysdate) value from dual<br />  select to_char(sysdate,'yyyy-mm-dd') value <br />from dual</p><br /><p>  38.求时?br />  S:select convert(char(8),getdate(),108) value<br />  O:select <br />to_char(sysdate,'hh24:mm:ss') value from dual</p><br /><p>  39.取日期时间的其他部分<br />  S:DATEPART ?DATENAME 函数 Q第一个参数决定) <br />  O:to_char函数 <br />W二个参数决?/p><br /><p>  参数---------------------------------下表需要补?br />  year yy, yyyy <br />  quarter <br />qq, q (季度)<br />  month mm, m (m O无效)<br />  dayofyear dy, y (O表星?<br />  day dd, d <br />(d O无效)<br />  week wk, ww (wk O无效)<br />  weekday dw (O不清?<br />  Hour hh,hh12,hh24 <br />(hh12,hh24 S无效)<br />  minute mi, n (n O无效)<br />  second ss, s (s <br />O无效)<br />  millisecond ms <br />(O无效)<br />  ----------------------------------------------</p><br /><p>  40.当月最后一?br />  S:day(convert(datetime,'20080501')-1)</p><br /><p>  O:select LAST_DAY(sysdate) value from dual</p><br /><p>  41.本星期的某一天(比如星期日)<br />  S:不知?br />  O:SELECT Next_day(sysdate,7) vaule FROM <br />DUAL;</p><br /><p>  42.字符串{旉<br />  S:可以直接转或者select cast('2004-09-08'as datetime) <br />value<br />  O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule <br />FROM DUAL;</p><br /><p>  43.求两日期某一部分的差Q比如秒Q?br />  S:select datediff(ss,getdate(),getdate()+12.3) <br />value<br />  O:直接用两个日期相减(比如d1-d2=12.3Q?br />  SELECT (d1-d2)*24*60*60 vaule FROM <br />DUAL;</p><br /><p>  44.Ҏ差值求新的日期Q比如分钟)<br />  S:select dateadd(mi,8,getdate()) <br />value<br />  O:SELECT sysdate+8/60/24 vaule FROM DUAL;</p><br /><p>  45.求不同时区时?br />  S:不知?br />  O:SELECT New_time(sysdate,'ydt','gmt' ) vaule <br />FROM DUAL;</p><br /><p>  -----时区参数,北京在东8区应该是Ydt-------<br />  AST ADT 大西z标准时?br />  BST BDT <br />白oh准时?br />  CST CDT 中部标准旉<br />  EST EDT 东部标准旉<br />  GMT 格林治标准旉<br />  HST HDT <br />阿拉斯加—夏威h准时?br />  MST MDT 山区标准旉<br />  NST U芬兰标准时?br />  PST PDT 太^z标准时?br />  YST <br />YDT YUKON标准旉</p><br /><p> </p><br /><p><strong>oracleҎ期时间进行加?/strong></p><br /><p>加法 <br />select sysdate,add_months(sysdate,12) from dual;         <br />--?q?br />select sysdate,add_months(sysdate,1) from dual;         --??br />select <br />sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;    <br />--?星期<br />select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from <br />dual;    --??br />select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') <br />from dual;   --?时<br />select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd <br />HH24:MI:SS') from dual;   --?分钟<br />select <br />sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; <br />--?U?br /><br />减法<br />select sysdate,add_months(sysdate,-12) from dual;         <br />--?q?br />select sysdate,add_months(sysdate,-1) from dual;         <br />--??br />select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;    <br />--?星期<br />select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from <br />dual;    --??br />select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') <br />from dual;   --?时<br />select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd <br />HH24:MI:SS') from dual;   --?分钟<br />select <br />sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --?U?/p></div></div><img src ="http://www.aygfsteel.com/tinguo002/aggbug/392229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tinguo002/" target="_blank">一堣而安</a> 2012-11-29 21:35 <a href="http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sql Server 中一个非常强大的日期格式化函?/title><link>http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392228.html</link><dc:creator>一堣而安</dc:creator><author>一堣而安</author><pubDate>Thu, 29 Nov 2012 13:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392228.html</guid><wfw:comment>http://www.aygfsteel.com/tinguo002/comments/392228.html</wfw:comment><comments>http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tinguo002/comments/commentRss/392228.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tinguo002/services/trackbacks/392228.html</trackback:ping><description><![CDATA[ <div class="wmqeeuq" id="sina_keyword_ad_area2" class="articalContent "><span style="font-size: 12px;"><font face="Verdana">转蝲自:<a >http://blog.sina.com.cn/s/blog_681932830100vxtq.html</a><br />Sql Server 中一个非常强大的日期格式化函?br />Select <br />CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM<br />Select <br />CONVERT(varchar(100), GETDATE(), 1): 05/16/06<br />Select CONVERT(varchar(100), <br />GETDATE(), 2): 06.05.16<br />Select CONVERT(varchar(100), GETDATE(), 3): <br />16/05/06<br />Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06<br />Select <br />CONVERT(varchar(100), GETDATE(), 5): 16-05-06<br />Select CONVERT(varchar(100), <br />GETDATE(), 6): 16 05 06<br />Select CONVERT(varchar(100), GETDATE(), 7): 05 16, <br />06<br />Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46<br />Select <br />CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM<br />Select <br />CONVERT(varchar(100), GETDATE(), 10): 05-16-06<br />Select CONVERT(varchar(100), <br />GETDATE(), 11): 06/05/16<br />Select CONVERT(varchar(100), GETDATE(), 12): <br />060516<br />Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 <br />10:57:46:937<br />Select CONVERT(varchar(100), GETDATE(), 14): <br />10:57:46:967<br />Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 <br />10:57:47<br />Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 <br />10:57:47.157<br />Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 <br />AM<br />Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16<br />Select <br />CONVERT(varchar(100), GETDATE(), 24): 10:57:47<br />Select CONVERT(varchar(100), <br />GETDATE(), 25): 2006-05-16 10:57:47.250<br />Select CONVERT(varchar(100), <br />GETDATE(), 100): 05 16 2006 10:57AM<br />Select CONVERT(varchar(100), GETDATE(), <br />101): 05/16/2006<br />Select CONVERT(varchar(100), GETDATE(), 102): <br />2006.05.16<br />Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006<br />Select <br />CONVERT(varchar(100), GETDATE(), 104): 16.05.2006<br />Select <br />CONVERT(varchar(100), GETDATE(), 105): 16-05-2006<br />Select <br />CONVERT(varchar(100), GETDATE(), 106): 16 05 2006<br />Select <br />CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006<br />Select <br />CONVERT(varchar(100), GETDATE(), 108): 10:57:49<br />Select CONVERT(varchar(100), <br />GETDATE(), 109): 05 16 2006 10:57:49:437AM<br />Select CONVERT(varchar(100), <br />GETDATE(), 110): 05-16-2006<br />Select CONVERT(varchar(100), GETDATE(), 111): <br />2006/05/16<br />Select CONVERT(varchar(100), GETDATE(), 112): 20060516<br />Select <br />CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513<br />Select <br />CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547<br />Select <br />CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49<br />Select <br />CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700<br />Select <br />CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827<br />Select <br />CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 <br />10:57:49:907AM<br />Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 <br />10:57:49:920AM</font></span></div><img src ="http://www.aygfsteel.com/tinguo002/aggbug/392228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tinguo002/" target="_blank">一堣而安</a> 2012-11-29 21:32 <a href="http://www.aygfsteel.com/tinguo002/archive/2012/11/29/392228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL:select case when(?http://www.aygfsteel.com/tinguo002/archive/2012/08/10/385247.html一堣而安一堣而安Fri, 10 Aug 2012 09:21:00 GMThttp://www.aygfsteel.com/tinguo002/archive/2012/08/10/385247.htmlhttp://www.aygfsteel.com/tinguo002/comments/385247.htmlhttp://www.aygfsteel.com/tinguo002/archive/2012/08/10/385247.html#Feedback0http://www.aygfsteel.com/tinguo002/comments/commentRss/385247.htmlhttp://www.aygfsteel.com/tinguo002/services/trackbacks/385247.html来自Q?br />http://www.cnblogs.com/cyrix/articles/1750184.html

CASE
可能?SQL 中被误用最多的关键字之一。虽然你可能以前用过q个关键字来创徏字段Q但是它q具有更多用法。例如,你可以在 WHERE 子句中?CASE?

首先让我们看一?
CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END

在上面的代码中需要用具体的参C替尖括号中的内容。下面是一个简单的例子Q?

USE pubs
GO
SELECT
Title,
'Price Range' =
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
FROM titles
ORDER BY price
GO

q是
CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面?GROUP BY 子句中的 CASEQ?

SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END
GO

你甚臌可以l合q些选项Q添加一?
ORDER BY 子句Q如下所C:

USE pubs
GO
SELECT
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END AS Range,
Title
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
ORDER BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
GO

注意Qؓ了在
GROUP BY 块中使用 CASEQ查询语句需要在 GROUP BY 块中重复 SELECT 块中?CASE 块?

除了选择自定义字D之外,在很多情况下
CASE 都非常有用。再深入一步,你还可以得到你以前认Z可能得到的分l排序结果集



一堣而安 2012-08-10 17:21 发表评论
]]>
վ֩ģ壺 | С| ƽ| | տ| | ع| | | Ԫ| | | Դ| | | Ѯ| | ʯ¥| ͨ| | | Ĵʡ| ԭ| ĵ| ˷| | ϳ| Ϫ| Ȫ| Ͻ| ƽȪ| Ϫ| г| | | | | | | | ¡|