﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-java技术</title><link>http://www.blogjava.net/justfang/</link><description>hibernate spring struts</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 07:53:01 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 07:53:01 GMT</pubDate><ttl>60</ttl><item><title>软件利器</title><link>http://www.blogjava.net/justfang/archive/2012/03/31/373106.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Sat, 31 Mar 2012 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2012/03/31/373106.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/373106.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2012/03/31/373106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/373106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/373106.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、软件（利器） 1.1  Everything Everything可以快速的搜索你本地硬盘（仅支持NTFS格式）的所有文件，速度秒杀一切工具，缺点就是只能根据文件名来搜索，不能根据内容来（这个Google  Desktop Search也不太好用），但是这已经足够了。&nbsp;详情请  via&nbsp;善用佳软-Everything:速度最快的文件名搜索工具&nbsp;。&nbsp;Tip...&nbsp;&nbsp;<a href='http://www.blogjava.net/justfang/archive/2012/03/31/373106.html'>阅读全文</a><img src ="http://www.blogjava.net/justfang/aggbug/373106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2012-03-31 11:09 <a href="http://www.blogjava.net/justfang/archive/2012/03/31/373106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 实践中常用命令</title><link>http://www.blogjava.net/justfang/archive/2011/09/16/358777.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Fri, 16 Sep 2011 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2011/09/16/358777.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/358777.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2011/09/16/358777.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/358777.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/358777.html</trackback:ping><description><![CDATA[1.decode(value,if1,then1,if2,then2,if3,then3,.....,else)<br />如果value等于if1时，DECODE函数的结果返回then1,....,如何不等于任何一个if值，则返回else<br />2.sign(变量1-变量2)<br />如果（变量1-变量2）大于0返回1,小于0返回-1,等于0返回0 <br /><div>3.COALESCE (expression_1, expression_2, ...,expression_n)<br /><div>列表中第一个非空的表达式是函数的返回值，如果所有的表达式都是空值，最终将返回一个空值。</div></div><img src ="http://www.blogjava.net/justfang/aggbug/358777.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2011-09-16 11:32 <a href="http://www.blogjava.net/justfang/archive/2011/09/16/358777.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在级联更新的时候为什么无法向list中add对象呢？</title><link>http://www.blogjava.net/justfang/archive/2010/11/10/337750.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Wed, 10 Nov 2010 11:19:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2010/11/10/337750.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/337750.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2010/11/10/337750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/337750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/337750.html</trackback:ping><description><![CDATA[A和B是一对多的关系，在做更新操作的时候做如下动作：<br />
<br />
A = dao.read(id);<br />
List&lt;B&gt; bList = A.getBList();<br />
bList.clear();<br />
<br />
B b1 = new B();<br />
b1.setA(A);<br />
bList.add(b1);<br />
<br />
B b2 = new B();<br />
b2.setA(A);<br />
bList.add(b2);<br />
<br />
A.<br />
<img src ="http://www.blogjava.net/justfang/aggbug/337750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2010-11-10 19:19 <a href="http://www.blogjava.net/justfang/archive/2010/11/10/337750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cascade="all-delete-orphan" 处理</title><link>http://www.blogjava.net/justfang/archive/2010/11/09/337639.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Tue, 09 Nov 2010 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2010/11/09/337639.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/337639.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2010/11/09/337639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/337639.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/337639.html</trackback:ping><description><![CDATA[<p>比如我们现在有一个Parent的实体，在Parent实体当中有一个children的Set<br />
由于这个children的数据并非非常重要，为了方便，我们在修改parent的时候，做法经常都是<br />
1,清空children全部删了，再把新的children全部加进去。<br />
今天早上做这一方面工作的时候遇到一个问题，就是在更新parent的时候，报了一个<br />
Don't dereference a collection with cascade="all-delete-orphan"<br />
的异常，经常一半个小时的查资料和调试，终于找到了解决问题的办法<br />
刚刚开始我的做法为：<br />
parent = parentService.findParentById(id);<br />
parent.getChildren.clear();<br />
parent.setChildren(newChildren);<br />
parentService.updateparent(parent);<br />
这样做一定会报出一个Don't dereference a collection with cascade="all-delete-orphan"的异常<br />
原来是，对于parent的children这个Set，它本身是一个持久的集合，该集合存在于hibernate的对象池当中，通过<br />
parent.setChildren(newChildren)的设置之后，本身已经将parent对children集合的引用指到对象池外的一个集合。<br />
后来查询资料后的做法为：<br />
parent = parentService.findParentById(id);<br />
parent.getChildren.clear();<br />
parent.getChildren.addAll(newChildren);<br />
parentService.updateparent(parent);<br />
做了几次测试，问题解决。<br />
hbm配置如下：<br />
&lt;set lazy="true" name="children" cascade="all,delete-orphan" inverse="true"&gt;<br />
&nbsp;&nbsp; &lt;key column="PARENT_ID"/&gt;<br />
&nbsp;&nbsp; &lt;one-to-many class="Child"/&gt;<br />
&lt;/set&gt;<br />
另外，hibernate 3已经将cascade当中的选项做了修改，现在已经没有了all-delete-orphan这个选项，虽然hibernate<br />
内部还是支持这个选项&#8230;&#8230;</p>
<img src ="http://www.blogjava.net/justfang/aggbug/337639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2010-11-09 16:30 <a href="http://www.blogjava.net/justfang/archive/2010/11/09/337639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mvn 常用命令</title><link>http://www.blogjava.net/justfang/archive/2009/12/24/307125.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Thu, 24 Dec 2009 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2009/12/24/307125.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/307125.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2009/12/24/307125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/307125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/307125.html</trackback:ping><description><![CDATA[<div><span style="font-family: Tahoma; ">mvn install -U -e -Dmaven.test.skip=true //安装跳过测试类,显示详细安装错误信息<br />
mvn test -Dtest=myTest //运行某一个单元测试类<br />
</span><br />
</div>
<img src ="http://www.blogjava.net/justfang/aggbug/307125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2009-12-24 12:03 <a href="http://www.blogjava.net/justfang/archive/2009/12/24/307125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>discriminator-value</title><link>http://www.blogjava.net/justfang/archive/2009/12/23/307013.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Wed, 23 Dec 2009 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2009/12/23/307013.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/307013.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2009/12/23/307013.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/307013.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/307013.html</trackback:ping><description><![CDATA[<span  style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><span style="font-size: small; ">可能经常遇到这样的情况：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span></span><span style="font-size: small; ">在数据库表中会有这样的一个字段用来区别记录的属性，如：在客户表中有一个字段表示客户级别，当这个记录为<span lang="EN-US"><span style="font-family: Calibri; ">A</span></span>时是一级客户，为<span lang="EN-US"><span style="font-family: Calibri; ">B</span></span>时是二级客户。在用<span lang="EN-US"><span style="font-family: Calibri; ">hiberante</span></span>做<span lang="EN-US"><span style="font-family: Calibri; ">OR</span></span>表示时类可能是这样的：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; private String flag;&nbsp;&nbsp; //</span></span><span style="font-size: small; ">表示客户的级别</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span></span><span style="font-size: small; ">然后，在程序中手动控制<span lang="EN-US"><span style="font-family: Calibri; ">flag</span></span>的值，但是这样当每个级的客户有不同的属性时<span lang="EN-US"><span style="font-family: Calibri; ">Customer</span></span>类将包含所有级别的属性，这样不是很好。</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; hibernate</span></span><span style="font-size: small; ">提供一个<span lang="EN-US"><span style="font-family: Calibri; ">Discriminator</span></span>映射的方法，就是把一个表映射成不同的类，有不同的属性。</span><span lang="EN-US"><br />
<br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; //</span></span><span style="font-size: small; ">包含所有级别的公共属性</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class CustomerA extends Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; //</span></span><span style="font-size: small; ">只包括一级客户的特有属性</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class CustomerB extends Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; //</span></span><span style="font-size: small; ">只包含二级客户特有的属性</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
</span></span><span style="font-size: small; ">这样更符合面向对象的原则，然后在<span lang="EN-US"><span style="font-family: Calibri; ">hbm.xml</span></span>中这样写：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&lt;id name="id" type="int"&gt;<br />
&nbsp;&nbsp;&nbsp; ...<br />
&lt;/id&gt;<br />
&lt;discriminator column="flag" type="string" /&gt;<br />
&lt;!--&nbsp;</span></span><span style="font-size: small; ">公共属性的映射</span><span style="font-size: small; "><span lang="EN-US"><span style="font-family: Calibri; ">&nbsp;--&gt;<br />
&lt;subclass name="CustomerA" discriminator-value="A"&gt;<br />
&lt;!--&nbsp;</span></span>一级客户特有属性的映射</span><span style="font-size: small; "><span lang="EN-US"><span style="font-family: Calibri; ">&nbsp;--&gt;<br />
&lt;/subclass&gt;<br />
&lt;subclass name="CustomerB" discriminator-value="B"&gt;<br />
&lt;!--&nbsp;</span></span>二级客户特有属性的映射</span><span style="font-size: small; "><span lang="EN-US"><span style="font-family: Calibri; ">&nbsp;--&gt;<br />
&lt;/subclass&gt;<br />
<br />
</span></span>这样就可以单独的用<span lang="EN-US"><span style="font-family: Calibri; ">CustomerA,CustomerB</span></span>这样的实例了，做数据库修改时就不用关心<span lang="EN-US"><span style="font-family: Calibri; ">flag</span></span>字段的值了，会自动的加<span lang="EN-US"><span style="font-family: Calibri; ">A</span></span>或<span lang="EN-US"><span style="font-family: Calibri; ">B</span></span>。</span><span lang="EN-US"><br />
<br />
</span><span style="font-size: small; ">如果是使用<span lang="EN-US"><span style="font-family: Calibri; ">hibernate Annotation</span></span>而不是<span lang="EN-US"><span style="font-family: Calibri; ">xml</span></span>来描述映谢关系，代码如下：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">@Entity<br />
@Table(name = "customer")<br />
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)<br />
@DiscriminatorColumn(name = "flag", discriminatorType = DiscriminatorType.STRING)<br />
public class Customer{<br />
}<br />
<br />
@Entity<br />
@DiscriminatorValue(value = "A")<br />
public class CustomerA extends Customer{<br />
}<br />
<br />
@Entity<br />
@DiscriminatorValue(value = "B")<br />
public class CustomerB extends Customer{<br />
}<br />
<br />
</span></span><span style="font-size: small; ">这样就可以了。</span></span>
<img src ="http://www.blogjava.net/justfang/aggbug/307013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2009-12-23 12:26 <a href="http://www.blogjava.net/justfang/archive/2009/12/23/307013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL CASE 语句</title><link>http://www.blogjava.net/justfang/archive/2009/12/23/306984.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Wed, 23 Dec 2009 02:24:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2009/12/23/306984.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/306984.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2009/12/23/306984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/306984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/306984.html</trackback:ping><description><![CDATA[<span  style="font-family: verdana, sans-serif; font-size: 14px; line-height: 21px; ">Case具有两种格式。简单Case函数和Case搜索函数。&nbsp;<br />
<span style="line-height: 21px; color: #008080; ">--</span><span style="line-height: 21px; color: #008080; ">简单Case函数</span><span style="line-height: 21px; color: #008080; "><br />
</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;sex<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">1</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">男</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">女</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">其他</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; "><br />
</span><span style="line-height: 21px; color: #008080; ">--</span><span style="line-height: 21px; color: #008080; ">Case搜索函数</span><span style="line-height: 21px; color: #008080; "><br />
</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;sex&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">1</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">男</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;sex&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">女</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">其他</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; "><br />
<br />
这两种方式，可以实现相同的功能。简单Case函数的写法相对比较简洁，但是和Case搜索函数相比，功能方面会有些限制，比如写判断式。&nbsp;<br />
还有一个需要注意的问题，Case函数只返回第一个符合条件的值，剩下的Case部分将会被自动忽略。&nbsp;<br />
</span><span style="line-height: 21px; color: #008080; ">--</span><span style="line-height: 21px; color: #008080; ">比如说，下面这段SQL，你永远无法得到&#8220;第二类&#8221;这个结果</span><span style="line-height: 21px; color: #008080; "><br />
</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;col_1&nbsp;</span><span style="line-height: 21px; color: #808080; ">IN</span><span style="line-height: 21px; color: #000000; ">&nbsp;(&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">a</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">,&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">b</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">)&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">第一类</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;col_1&nbsp;</span><span style="line-height: 21px; color: #808080; ">IN</span><span style="line-height: 21px; color: #000000; ">&nbsp;(</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">a</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">第二类</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">其他</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; "><br />
<br />
下面我们来看一下，使用Case函数都能做些什么事情。&nbsp;<br />
<br />
一，已知数据按照另外一种方式进行分组，分析。&nbsp;<br />
<br />
有如下数据:(为了看得更清楚，我并没有使用国家代码，而是直接用国家名作为Primary&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">Key</span><span style="line-height: 21px; color: #000000; ">)&nbsp;<br />
国家（country）&nbsp;&nbsp;&nbsp; 人口（population）<br />
中国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">600</span><span style="line-height: 21px; color: #000000; "><br />
美国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">100</span><span style="line-height: 21px; color: #000000; "><br />
加拿大&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">100</span><span style="line-height: 21px; color: #000000; "><br />
英国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">200</span><span style="line-height: 21px; color: #000000; "><br />
法国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">300</span><span style="line-height: 21px; color: #000000; "><br />
日本&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">250</span><span style="line-height: 21px; color: #000000; "><br />
德国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">200</span><span style="line-height: 21px; color: #000000; "><br />
墨西哥&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">50</span><span style="line-height: 21px; color: #000000; "><br />
印度&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">250</span><span style="line-height: 21px; color: #000000; "><br />
<br />
根据这个国家人口数据，统计亚洲和北美洲的人口数量。应该得到下面这个结果。&nbsp;<br />
洲&nbsp;&nbsp;&nbsp; 人口<br />
亚洲&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1100</span><span style="line-height: 21px; color: #000000; "><br />
北美洲&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">250</span><span style="line-height: 21px; color: #000000; "><br />
其他&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">700</span><span style="line-height: 21px; color: #000000; "><br />
<br />
想要解决这个问题，你会怎么做？生成一个带有洲Code的View，是一个解决方法，但是这样很难动态的改变统计的方式。&nbsp;<br />
如果使用Case函数，SQL代码如下:&nbsp;<br />
</span><span style="line-height: 21px; color: #0000ff; ">SELECT</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">SUM</span><span style="line-height: 21px; color: #000000; ">(population),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;country<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">中国</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">亚洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">印度</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">亚洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">日本</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">亚洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">美国</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">北美洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">加拿大</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">北美洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">墨西哥</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">北美洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">其他</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; "><br />
</span><span style="line-height: 21px; color: #0000ff; ">FROM</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp; Table_A<br />
</span><span style="line-height: 21px; color: #0000ff; ">GROUP</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">BY</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;country<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">中国</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">亚洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">印度</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">亚洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">日本</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">亚洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">美国</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">北美洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">加拿大</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">北美洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">墨西哥</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">北美洲</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">其他</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; ">;<br />
<br />
同样的，我们也可以用这个方法来判断工资的等级，并统计每一等级的人数。SQL代码如下；&nbsp;<br />
</span><span style="line-height: 21px; color: #0000ff; ">SELECT</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">500</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">1</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">500</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">600</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">600</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">800</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">3</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">800</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1000</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">4</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">NULL</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary_class,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">COUNT</span><span style="line-height: 21px; color: #000000; ">(</span><span style="line-height: 21px; color: #808080; ">*</span><span style="line-height: 21px; color: #000000; ">)<br />
</span><span style="line-height: 21px; color: #0000ff; ">FROM</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp; Table_A<br />
</span><span style="line-height: 21px; color: #0000ff; ">GROUP</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">BY</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">500</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">1</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">500</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">600</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">600</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">800</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">3</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">800</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&lt;=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1000</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">4</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">NULL</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; ">;<br />
<br />
二，用一个SQL语句完成不同条件的分组。&nbsp;<br />
<br />
有如下数据&nbsp;<br />
国家（country）&nbsp;&nbsp;&nbsp; 性别（sex）&nbsp;&nbsp;&nbsp; 人口（population）<br />
中国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">340</span><span style="line-height: 21px; color: #000000; "><br />
中国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">2</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">260</span><span style="line-height: 21px; color: #000000; "><br />
美国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">45</span><span style="line-height: 21px; color: #000000; "><br />
美国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">2</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">55</span><span style="line-height: 21px; color: #000000; "><br />
加拿大&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">51</span><span style="line-height: 21px; color: #000000; "><br />
加拿大&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">2</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">49</span><span style="line-height: 21px; color: #000000; "><br />
英国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">40</span><span style="line-height: 21px; color: #000000; "><br />
英国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">2</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">60</span><span style="line-height: 21px; color: #000000; "><br />
<br />
按照国家和性别进行分组，得出结果如下&nbsp;<br />
国家&nbsp;&nbsp;&nbsp; 男&nbsp;&nbsp;&nbsp; 女<br />
中国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">340</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">260</span><span style="line-height: 21px; color: #000000; "><br />
美国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">45</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">55</span><span style="line-height: 21px; color: #000000; "><br />
加拿大&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">51</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">49</span><span style="line-height: 21px; color: #000000; "><br />
英国&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">40</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">60</span><span style="line-height: 21px; color: #000000; "><br />
<br />
普通情况下，用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分)，而且SQL语句会比较长。<br />
下面是一个是用Case函数来完成这个功能的例子&nbsp;<br />
</span><span style="line-height: 21px; color: #0000ff; ">SELECT</span><span style="line-height: 21px; color: #000000; ">&nbsp;country,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">SUM</span><span style="line-height: 21px; color: #000000; ">(&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;sex&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">1</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; population&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">0</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; ">),&nbsp;&nbsp;</span><span style="line-height: 21px; color: #008080; ">--</span><span style="line-height: 21px; color: #008080; ">男性人口</span><span style="line-height: 21px; color: #008080; "><br />
</span><span style="line-height: 21px; color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">SUM</span><span style="line-height: 21px; color: #000000; ">(&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;sex&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; population&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">0</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; ">)&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #008080; ">--</span><span style="line-height: 21px; color: #008080; ">女性人口</span><span style="line-height: 21px; color: #008080; "><br />
</span><span style="line-height: 21px; color: #0000ff; ">FROM</span><span style="line-height: 21px; color: #000000; ">&nbsp; Table_A<br />
</span><span style="line-height: 21px; color: #0000ff; ">GROUP</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">BY</span><span style="line-height: 21px; color: #000000; ">&nbsp;country;<br />
<br />
这样我们使用Select，完成对二维表的输出形式，充分显示了Case函数的强大。&nbsp;<br />
<br />
三，在Check中使用Case函数。&nbsp;<br />
<br />
在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check，那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。&nbsp;<br />
下面我们来举个例子&nbsp;<br />
公司A，这个公司有个规定，女职员的工资必须高于1000块。如果用Check和Case来表现的话，如下所示&nbsp;<br />
</span><span style="line-height: 21px; color: #0000ff; ">CONSTRAINT</span><span style="line-height: 21px; color: #000000; ">&nbsp;check_salary&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">CHECK</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;sex&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff00ff; ">CASE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">WHEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1000</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">THEN</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">0</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">ELSE</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">END</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1</span><span style="line-height: 21px; color: #000000; ">&nbsp;)<br />
<br />
如果单纯使用Check，如下所示&nbsp;<br />
</span><span style="line-height: 21px; color: #0000ff; ">CONSTRAINT</span><span style="line-height: 21px; color: #000000; ">&nbsp;check_salary&nbsp;</span><span style="line-height: 21px; color: #0000ff; ">CHECK</span><span style="line-height: 21px; color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( sex&nbsp;</span><span style="line-height: 21px; color: #808080; ">=</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #ff0000; ">2</span><span style="line-height: 21px; color: #ff0000; ">'</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; color: #808080; ">AND</span><span style="line-height: 21px; color: #000000; ">&nbsp;salary&nbsp;</span><span style="line-height: 21px; color: #808080; ">&gt;</span><span style="line-height: 21px; color: #000000; ">&nbsp;</span><span style="line-height: 21px; font-weight: bold; color: #800000; ">1000</span><span style="line-height: 21px; color: #000000; ">&nbsp;)<br />
<br />
女职员的条件倒是符合了，男职员就无法输入了。</span></span>
<img src ="http://www.blogjava.net/justfang/aggbug/306984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2009-12-23 10:24 <a href="http://www.blogjava.net/justfang/archive/2009/12/23/306984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL 外链接操作小结 inner join left join right join</title><link>http://www.blogjava.net/justfang/archive/2009/12/22/306936.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Tue, 22 Dec 2009 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2009/12/22/306936.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/306936.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2009/12/22/306936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/306936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/306936.html</trackback:ping><description><![CDATA[<span  style="font-family: Verdana, Arial, Helvetica, 宋体, sans-serif; font-size: 13px; line-height: 23px; ">简介: 外部连接和自联接 inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 on 指定表间联结字段及其关系的等号 "=" 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录. ! 外部连接只能操作已存在于数据库中的数据<br />
update (ctarticle as a left join ctclass as c on a.classid = c.classid) left join cttag as b on a.articleid = b.articleid&nbsp;<br />
set tag=tag+' ', b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid&nbsp;<br />
where a.classid=23 and a.nclassid=0 and tagid is not null&nbsp;<br />
<br />
update (ctarticle as a left join (ctnclass as c left join ctclass as d on c.classid = d.classid) on a.nclassid = c.nclassid and a.classid = c.classid) left join cttag as b on a.articleid = b.articleid set tag=d.class+' '+c.nclass, b.articleid=a.articleid, b.classid=a.classid, b.nclassid=a.nclassid where a.classid=23 and a.nclassid=197;&nbsp;<br />
<br />
更新操作&nbsp;<br />
左连接中数据的筛选&nbsp;<br />
insert into cttag(articleid,classid,nclassid) select a.articleid,a.classid,a.nclassid from ctarticle a left join cttag b on a.articleid=b.articleid where b.articleid is null&nbsp;<br />
<br />
//本语句功能为, 显示主表的全部内容, 插入数据到副表中没有的数据&nbsp;<br />
//主要作用为: 让数据减少冗余&nbsp;<br />
<br />
上例中的延续&nbsp;<br />
select a.*, b.*, c.*, d.*&nbsp;<br />
from cttag as d left join ((ctarticle as a left join ctclass as b on a.classid=b.classid) left join ctnclass as c on a.nclassid=c.nclassid) on d.articleid=a.articleid;&nbsp;<br />
<br />
显示文章表中的全部, 调用类别表中的栏目&nbsp;<br />
select a.*, b.*, c.* from (ctarticle a left join ctclass b on a.classid=b.classid) left join ctnclass c on a.nclassid=c.nclassid&nbsp;<br />
<br />
//作用, 有时在文章表中包含了在个别类别表中没有的数据, 用这个语法可以读出文章表的全部数据&nbsp;<br />
//a 为 文章表, b 为主类别, c 为子类别&nbsp;<br />
<br />
同上例, 选择追加数据时加上空格&nbsp;<br />
insert into cttag(articleid,classid,nclassid,tag)&nbsp;<br />
select a.articleid,a.classid,a.nclassid,d.class+' '+c.nclass&nbsp;<br />
from (ctarticle as a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) left join cttag as b on a.articleid = b.articleid where a.classid=4 and a.nclassid=154;&nbsp;<br />
<br />
连接n个表, 并追加数据到其中一个表, n=4&nbsp;<br />
insert into cttag(articleid,classid,nclassid,tag)&nbsp;<br />
select a.articleid,a.classid,a.nclassid,d.class+c.nclass&nbsp;<br />
from (ctarticle as a left join (ctnclass c left join ctclass d on c.classid=d.classid) on a.classid=c.classid and a.nclassid=c.nclassid) left join cttag as b on a.articleid = b.articleid where a.classid=1 and a.nclassid=1;&nbsp;<br />
<br />
//解读&nbsp;<br />
插入到 表2(栏1,栏2,栏3,栏4)&nbsp;<br />
选择 别名a.栏1, 别名a.栏2, 别名a.栏3, 别名d.栏4 加上 别名c.栏5&nbsp;<br />
从 (表1 别名a 左连接 (表3 别名c 左连接 表4 别名d 在 别名c.栏2 等于 别名d.栏2) 在 别名a.栏2 等于 别名c.栏2 和 别名a.栏3=别名c.栏3) 左连接 表2 别名b 在 别名a.栏1 等于 别名b.栏1 在那里 别名a.栏2=1 和 别名a.栏3=1&nbsp;<br />
<br />
连接两个表, 并追加数据到其中一个表&nbsp;<br />
insert into cttag(articleid,classid,nclassid)&nbsp;<br />
select a.articleid,a.classid,a.nclassid&nbsp;<br />
from ctarticle as a left join cttag as b on a.articleid = b.articleid where a.classid=1 and a.nclassid=1;&nbsp;<br />
<br />
//解读&nbsp;<br />
插入到 表2(栏1,栏2,栏3)&nbsp;<br />
选择 别名a.栏1, 别名a.栏2, 别名a.栏3&nbsp;<br />
从 表1 别名a 左连接 表2 别名b 在 别名a.栏1 等于 别名b.栏1 在那里 别名a.栏4=1 和 别名a.栏5=1&nbsp;<br />
<br />
左连接&nbsp;<br />
<br />
同步两表的数据&nbsp;<br />
update ctarticle a inner join cttag b on a.articleid = b.articleid set b.classid=a.classid, b.nclassid=a.nclassid;&nbsp;<br />
<br />
//解读&nbsp;<br />
更新 表1 别名a 联接 表2 别名2 在 别名a.栏1 等于 别名b.栏1 设置 别名b.栏2 更新为 别名a.栏2, 别名b.栏3 更新为 别名a.栏3&nbsp;<br />
<br />
右外连接&nbsp;<br />
select a.*, b.* from bunclass a right join ctclass b on a.classid=b.classid where a.nclassid=20&nbsp;<br />
<br />
查询别名 a,b 表, 只匹配 b 表中的内容.&nbsp;<br />
<br />
添加数据到连接表之一&nbsp;<br />
insert into cttag ( tag, articleid ) select top 1 b.tag, a.articleid from ctarticle as a left join cttag as b on a.articleid = b.articleid where a.articleid order by a.articleid desc;&nbsp;<br />
<br />
变通中的用法二&nbsp;<br />
insert into bureply&nbsp;<br />
select b.*, a.classid, a.nclassid&nbsp;<br />
from article as a inner join reply as b on a.articleid = b.articleid&nbsp;<br />
where classid=50;&nbsp;<br />
<br />
实际应用中的变通&nbsp;<br />
insert into butag ( tag, articleid, classid, nclassid)&nbsp;<br />
select b.tag, a.articleid, a.classid, a.nclassid&nbsp;<br />
from article as a inner join tag as b on a.articleid = b.articleid&nbsp;<br />
where classid=24;&nbsp;<br />
<br />
<br />
添加数据到其他表&nbsp;<br />
insert into butag ( tag, articleid )&nbsp;<br />
select b.tag, a.articleid&nbsp;<br />
from article as a inner join tag as b on a.articleid = b.articleid&nbsp;<br />
where a.articleid&lt;&gt;false;&nbsp;<br />
<br />
//解读&nbsp;<br />
添加到 接收表(列1,列2)&nbsp;<br />
选择 别名b.列1, 别名a.列2&nbsp;<br />
从 表1 表名a 联接 表2 表名b 在 别名a.列c 等于 别名b.列c&nbsp;<br />
在哪里 别名a.列c 不等于 没有&nbsp;<br />
<br />
实际应用中的变通&nbsp;<br />
select b.tag, a.articleid, a.classid, a.nclassid&nbsp;<br />
from article as a inner join tag as b on a.articleid = b.articleid&nbsp;<br />
where a.classid=24;&nbsp;<br />
<br />
查询&nbsp;<br />
select b.tag, a.articleid&nbsp;<br />
from article as a inner join tag as b on a.articleid = b.articleid&nbsp;<br />
where a.articleid&lt;&gt;false;&nbsp;<br />
<br />
//解读&nbsp;<br />
选择 别名b.列, 别名a.列&nbsp;<br />
从 表1 别名a 联接 表2 别名b 在 别名a.列c = 别名b.列c&nbsp;<br />
在哪里 别名a.列c 不等于 没有&nbsp;<br />
注: as 不是必要</span>
<img src ="http://www.blogjava.net/justfang/aggbug/306936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2009-12-22 17:56 <a href="http://www.blogjava.net/justfang/archive/2009/12/22/306936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别</title><link>http://www.blogjava.net/justfang/archive/2009/12/22/306933.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Tue, 22 Dec 2009 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2009/12/22/306933.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/306933.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2009/12/22/306933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/306933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/306933.html</trackback:ping><description><![CDATA[<div>SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:<br />
IN:确定给定的值是否与子查询或列表中的值相匹配。<br />
IN 关键字使您得以选择与列表中的任意一个值匹配的行。<br />
当要获得居住在 California、Indiana 或 Maryland 州的所有作者的姓名和州的列表时，就需要下列查询：<br />
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5<br />
然而，如果使用 IN，少键入一些字符也可以得到同样的结果：<br />
SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)<br />
IN 关键字之后的项目必须用逗号隔开，并且括在括号中。<br />
下列查询在 titleauthor 表中查找在任一种书中得到的版税少于 50% 的所有作者的 au_id，然后从 authors 表中选择 au_id 与<br />
titleauthor 查询结果匹配的所有作者的姓名：&nbsp;<br />
SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper &lt; 50)<br />
结果显示有一些作者属于少于 50% 的一类。<br />
NOT IN:通过 NOT IN 关键字引入的子查询也返回一列零值或更多值。<br />
以下查询查找没有出版过商业书籍的出版商的名称。<br />
SELECT pub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHERE type = 'business')<br />
使用 EXISTS 和 NOT EXISTS 引入的子查询可用于两种集合原理的操作：交集与差集。两个集合的交集包含同时属于两个原集合的所有元素。<br />
差集包含只属于两个集合中的第一个集合的元素。<br />
EXISTS:指定一个子查询，检测行的存在。&nbsp;<br />
本示例所示查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名：<br />
SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =<br />
'business')<br />
SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')<br />
两者的区别:<br />
EXISTS:后面可以是整句的查询语句如:SELECT * FROM titles<br />
IN:后面只能是对单列:SELECT pub_id FROM titles<br />
NOT EXISTS:<br />
例如，要查找不出版商业书籍的出版商的名称：<br />
SELECT pub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type =<br />
'business')<br />
下面的查询查找已经不销售的书的名称:<br />
SELECT title FROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id = titles.title_id)</div>
<img src ="http://www.blogjava.net/justfang/aggbug/306933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2009-12-22 17:26 <a href="http://www.blogjava.net/justfang/archive/2009/12/22/306933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>discriminator-value</title><link>http://www.blogjava.net/justfang/archive/2009/11/27/303903.html</link><dc:creator>just</dc:creator><author>just</author><pubDate>Fri, 27 Nov 2009 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/justfang/archive/2009/11/27/303903.html</guid><wfw:comment>http://www.blogjava.net/justfang/comments/303903.html</wfw:comment><comments>http://www.blogjava.net/justfang/archive/2009/11/27/303903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justfang/comments/commentRss/303903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justfang/services/trackbacks/303903.html</trackback:ping><description><![CDATA[<span  style="font-family: Arial, sans-serif, Helvetica, Tahoma; font-size: 12px; line-height: 18px; "><span style="font-size: small; ">可能经常遇到这样的情况：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span></span><span style="font-size: small; ">在数据库表中会有这样的一个字段用来区别记录的属性，如：在客户表中有一个字段表示客户级别，当这个记录为<span lang="EN-US"><span style="font-family: Calibri; ">A</span></span>时是一级客户，为<span lang="EN-US"><span style="font-family: Calibri; ">B</span></span>时是二级客户。在用<span lang="EN-US"><span style="font-family: Calibri; ">hiberante</span></span>做<span lang="EN-US"><span style="font-family: Calibri; ">OR</span></span>表示时类可能是这样的：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; private String flag;&nbsp;&nbsp; //</span></span><span style="font-size: small; ">表示客户的级别</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span></span><span style="font-size: small; ">然后，在程序中手动控制<span lang="EN-US"><span style="font-family: Calibri; ">flag</span></span>的值，但是这样当每个级的客户有不同的属性时<span lang="EN-US"><span style="font-family: Calibri; ">Customer</span></span>类将包含所有级别的属性，这样不是很好。</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; hibernate</span></span><span style="font-size: small; ">提供一个<span lang="EN-US"><span style="font-family: Calibri; ">Discriminator</span></span>映射的方法，就是把一个表映射成不同的类，有不同的属性。</span><span lang="EN-US"><br />
<br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; //</span></span><span style="font-size: small; ">包含所有级别的公共属性</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; ...<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class CustomerA extends Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; //</span></span><span style="font-size: small; ">只包括一级客户的特有属性</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; public class CustomerB extends Customer{<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; //</span></span><span style="font-size: small; ">只包含二级客户特有的属性</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />
</span></span><span style="font-size: small; ">这样更符合面向对象的原则，然后在<span lang="EN-US"><span style="font-family: Calibri; ">hbm.xml</span></span>中这样写：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">&lt;id name="id" type="int"&gt;<br />
&nbsp;&nbsp;&nbsp; ...<br />
&lt;/id&gt;<br />
&lt;discriminator column="flag" type="string" /&gt;<br />
&lt;!--&nbsp;</span></span><span style="font-size: small; ">公共属性的映射</span><span style="font-size: small; "><span lang="EN-US"><span style="font-family: Calibri; ">&nbsp;--&gt;<br />
&lt;subclass name="CustomerA" discriminator-value="A"&gt;<br />
&lt;!--&nbsp;</span></span>一级客户特有属性的映射</span><span style="font-size: small; "><span lang="EN-US"><span style="font-family: Calibri; ">&nbsp;--&gt;<br />
&lt;/subclass&gt;<br />
&lt;subclass name="CustomerB" discriminator-value="B"&gt;<br />
&lt;!--&nbsp;</span></span>二级客户特有属性的映射</span><span style="font-size: small; "><span lang="EN-US"><span style="font-family: Calibri; ">&nbsp;--&gt;<br />
&lt;/subclass&gt;<br />
<br />
</span></span>这样就可以单独的用<span lang="EN-US"><span style="font-family: Calibri; ">CustomerA,CustomerB</span></span>这样的实例了，做数据库修改时就不用关心<span lang="EN-US"><span style="font-family: Calibri; ">flag</span></span>字段的值了，会自动的加<span lang="EN-US"><span style="font-family: Calibri; ">A</span></span>或<span lang="EN-US"><span style="font-family: Calibri; ">B</span></span>。</span><span lang="EN-US"><br />
<br />
</span><span style="font-size: small; ">如果是使用<span lang="EN-US"><span style="font-family: Calibri; ">hibernate Annotation</span></span>而不是<span lang="EN-US"><span style="font-family: Calibri; ">xml</span></span>来描述映谢关系，代码如下：</span><span lang="EN-US"><br />
<span style="font-size: small; font-family: Calibri; ">@Entity<br />
@Table(name = "customer")<br />
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)<br />
@DiscriminatorColumn(name = "flag", discriminatorType = DiscriminatorType.STRING)<br />
public class Customer{<br />
}<br />
<br />
@Entity<br />
@DiscriminatorValue(value = "A")<br />
public class CustomerA extends Customer{<br />
}<br />
<br />
@Entity<br />
@DiscriminatorValue(value = "B")<br />
public class CustomerB extends Customer{<br />
}<br />
<br />
</span></span><span style="font-size: small; ">这样就可以了。</span></span>
<img src ="http://www.blogjava.net/justfang/aggbug/303903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justfang/" target="_blank">just</a> 2009-11-27 15:27 <a href="http://www.blogjava.net/justfang/archive/2009/11/27/303903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>