SQL server的一道入门面试题背后的思考
最近看到一个SQL Server的小例子,发现完全可以作为SQL server的一道入门面试题。题目如下: 例:有一合同表Contract Id Name Total buget 1 合同名称 100 102,22 2 合同名称2 300 ,102,22, 3 合同名称3 200 103,23, 要求:用SQL语句更新表的buget字段,如果前后没有","要加上","(即一个英文逗号)。(10分) 创建表数据: View Code
1 |
<ol class="dp-sql"><li class="alt"><span><span>use Testdb2 </span></span></li><li><span>go </span></li><li class="alt"><span>IF </span><span class="op"><font color="#808080">NOT</font></span><span> OBJECT_ID(</span><span class="string"><font color="#0000ff">'[Contract]'</font></span><span>) </span><span class="keyword"><strong><font color="#006699">IS</font></strong></span><span> </span><span class="op"><font color="#808080">NULL</font></span><span> </span></li><li><span class="keyword"><strong><font color="#006699">DROP</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">TABLE</font></strong></span><span> [Contract] </span></li><li class="alt"><span>GO </span></li><li><span class="keyword"><strong><font color="#006699">Create</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">table</font></strong></span><span> [Contract] </span></li><li class="alt"><span>(ID </span><span class="keyword"><strong><font color="#006699">int</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">primary</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">key</font></strong></span><span> identity(1,1) </span></li><li><span>,[</span><span class="keyword"><strong><font color="#006699">Name</font></strong></span><span>] nvarchar(50) </span><span class="op"><font color="#808080">null</font></span><span> </span></li><li class="alt"><span>,Total </span><span class="keyword"><strong><font color="#006699">float</font></strong></span><span> </span><span class="op"><font color="#808080">null</font></span><span> </span></li><li><span>,buget Nvarchar(500) </span><span class="op"><font color="#808080">null</font></span><span> ) </span></li><li class="alt"><span>go </span></li><li><span class="keyword"><strong><font color="#006699">insert</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">into</font></strong></span><span> [Contract] </span></li><li class="alt"><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> </span><span class="string"><font color="#0000ff">'合同名称'</font></span><span>, 100,</span><span class="string"><font color="#0000ff">'102,22'</font></span><span> </span></li><li><span class="keyword"><strong><font color="#006699">union</font></strong></span><span> </span><span class="op"><font color="#808080">all</font></span><span> </span></li><li class="alt"><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> </span><span class="string"><font color="#0000ff">'合同名称2'</font></span><span>, 300,</span><span class="string"><font color="#0000ff">',102,22,'</font></span><span> </span></li><li><span class="keyword"><strong><font color="#006699">union</font></strong></span><span> </span><span class="op"><font color="#808080">all</font></span><span> </span></li><li class="alt"><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> </span><span class="string"><font color="#0000ff">'合同名称3'</font></span><span>, 300,</span><span class="string"><font color="#0000ff">'101,23,'</font></span><span> </span></li></ol> |
分析:这道题乍看很简单,由于肯定用到Replace,所以很自然的结合left,right,从而得到以下语句 方法一:
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">update</font></strong></span><span> [Contract] </span><span class="keyword"><strong><font color="#006699">set</font></strong></span><span> buget=</span><span class="string"><font color="#0000ff">','</font></span><span>+buget </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> </span><span class="func"><font color="#ff1493">left</font></span><span>(buget,1)=</span><span class="string"><font color="#0000ff">','</font></span><span> </span></span></li><li><span class="keyword"><strong><font color="#006699">update</font></strong></span><span> [Contract] </span><span class="keyword"><strong><font color="#006699">set</font></strong></span><span> buget=buget+</span><span class="string"><font color="#0000ff">','</font></span><span> </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> </span><span class="func"><font color="#ff1493">right</font></span><span>(buget,1)=</span><span class="string"><font color="#0000ff">','</font></span><span> </span></li></ol> |
如果能写成一个 SQL语句,可以加1分。
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">update</font></strong></span><span> [Contract] </span></span></li><li><span class="keyword"><strong><font color="#006699">set</font></strong></span><span> buget=(</span><span class="func"><font color="#ff1493">case</font></span><span> </span><span class="keyword"><strong><font color="#006699">when</font></strong></span><span> (</span><span class="func"><font color="#ff1493">left</font></span><span>(buget,1)!=</span><span class="string"><font color="#0000ff">','</font></span><span> </span><span class="op"><font color="#808080">and</font></span><span> </span><span class="func"><font color="#ff1493">right</font></span><span> (buget,1)!=</span><span class="string"><font color="#0000ff">','</font></span><span>) </span><span class="keyword"><strong><font color="#006699">then</font></strong></span><span> </span><span class="string"><font color="#0000ff">','</font></span><span>+buget+</span><span class="string"><font color="#0000ff">','</font></span><span> </span></li><li class="alt"><span class="keyword"><strong><font color="#006699">when</font></strong></span><span> </span><span class="func"><font color="#ff1493">left</font></span><span>(buget,1)!=</span><span class="string"><font color="#0000ff">','</font></span><span> </span><span class="keyword"><strong><font color="#006699">then</font></strong></span><span> </span><span class="string"><font color="#0000ff">','</font></span><span>+buget </span></li><li><span class="keyword"><strong><font color="#006699">when</font></strong></span><span> </span><span class="func"><font color="#ff1493">right</font></span><span>(buget,1)!=</span><span class="string"><font color="#0000ff">','</font></span><span> </span><span class="keyword"><strong><font color="#006699">then</font></strong></span><span> buget+</span><span class="string"><font color="#0000ff">','</font></span><span> </span></li><li class="alt"><span class="keyword"><strong><font color="#006699">else</font></strong></span><span> buget </span></li><li><span class="keyword"><strong><font color="#006699">end</font></strong></span><span>) </span></li></ol> |
如果能从字符串的开关和结尾这个思路出发,结合Reverse,可以提到如下方法: 方法二:
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">update</font></strong></span><span> [Contract] </span><span class="keyword"><strong><font color="#006699">set</font></strong></span><span> buget=</span><span class="string"><font color="#0000ff">','</font></span><span>+buget </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> charindex(</span><span class="string"><font color="#0000ff">','</font></span><span>,buget)<>1 </span></span></li><li><span class="keyword"><strong><font color="#006699">update</font></strong></span><span> [Contract] </span><span class="keyword"><strong><font color="#006699">set</font></strong></span><span> buget=buget+</span><span class="string"><font color="#0000ff">','</font></span><span> </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> charindex(</span><span class="string"><font color="#0000ff">','</font></span><span>,reverse(buget))<>1 </span></li></ol> |
该方法,主要涉及charindex函数和reverse函数。 说实话,我当时就这两种思路,这也是SQL中常见的基本用法。但出人意料的第三种方法出现了。 方法三:
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">UPDATE</font></strong></span><span> [contract] </span><span class="keyword"><strong><font color="#006699">SET</font></strong></span><span> Buget = </span><span class="string"><font color="#0000ff">','</font></span><span>+Buget+</span><span class="string"><font color="#0000ff">','</font></span><span> </span></span></li><li><span class="keyword"><strong><font color="#006699">UPDATE</font></strong></span><span> [contract] </span><span class="keyword"><strong><font color="#006699">SET</font></strong></span><span> Buget = </span><span class="func"><font color="#ff1493">REPLACE</font></span><span>(Buget,</span><span class="string"><font color="#0000ff">',,'</font></span><span>,</span><span class="string"><font color="#0000ff">','</font></span><span>) </span></li></ol> |
解析:该方法最主要的亮点不在于语法的精妙,而在于其思路的异于常规。先给两边补上逗号,再替换双逗号为单逗号。这在实际编程中确实难能可贵。换句话说,如果没有事先思考过的话,这反映了解题者反应敏捷,思路开放。因此,至少可以再加3分。 当然,此语句其实还是有bug,比如如果原bug字段中间有两个逗号,那么在Replace时就会更新掉不应该更新的内容。不过,稍加修正,限定replace的范围即可, 受此思路启发,可以引申得到以下类似方法: 方法四:
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">UPDATE</font></strong></span><span> [contract] </span><span class="keyword"><strong><font color="#006699">SET</font></strong></span><span> Buget = </span><span class="func"><font color="#ff1493">substring</font></span><span>(BuGet,2,len(BuGet)-1) wherecharindex(</span><span class="string"><font color="#0000ff">','</font></span><span>,buget)=1 </span></span></li><li><span class="keyword"><strong><font color="#006699">UPDATE</font></strong></span><span> [contract] </span><span class="keyword"><strong><font color="#006699">SET</font></strong></span><span> Buget = </span><span class="func"><font color="#ff1493">substring</font></span><span>(BuGet,1,len(BuGet)-1) wherecharindex(</span><span class="string"><font color="#0000ff">','</font></span><span>,reverse(buget))=1 </span></li><li class="alt"><span class="keyword"><strong><font color="#006699">UPDATE</font></strong></span><span> [contract] </span><span class="keyword"><strong><font color="#006699">SET</font></strong></span><span> BuGet = </span><span class="string"><font color="#0000ff">','</font></span><span>+BuGet+</span><span class="string"><font color="#0000ff">','</font></span><span> </span></li></ol> |
该方法是先去掉两边的逗号,再给每条记录加上逗号,比起方法三来,稍显繁琐,这也反衬了方法三的巧妙。 当然,也可以结合前面的思路稍作修正,这里就不再赘述,请读者自己思考。 感悟:释迦牟尼说过“人生需要经过六项修炼:布施、持戒、忍辱、精进、禅定、智慧。”,SQL编程,或C#、Java,甚至Javascrip的某个领域也是如此。技术是死的,思路是鲜活的,有时候,思路能轻易地突破技术很难实现的死角。到了一定程度时,会发现潜意识里已经被惯性思维塞满,而无法接受新鲜思维方式或思路,如果一段时间内持续如此,那么,我们应该警醒,把自己的头脑放空,把自己置于一个初学者的地位,重新开始“精进”的修炼! 原文链接:http://www.cnblogs.com/downmoon/archive/2011/03/02/1968615.html
View Details写出高性能SQL语句的十三条法则
1、 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用“全表扫描”方式。 可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要: (1) SQL语句是否清晰地告诉查询优化器它想干什么? (2) 查询优化器得到的数据库统计信息是否是最新的、正确的? 2、 统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的。
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> * </span><span class="keyword"><strong><font color="#006699">from</font></strong></span><span> dual </span></span></li><li><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> * </span><span class="keyword"><strong><font color="#006699">From</font></strong></span><span> dual </span></li></ol> |
其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行! 3、 不要把SQL语句写得太复杂 我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长。一般来说这么复杂的语句通常都是有问题的。我拿着这2页长的SQL语句去请教原作者,结果他说时间太长,他一时也看不懂了。可想而知,连原作者都有可能看糊涂的SQL语句,数据库也一样会看糊涂。 一般,将一个Select语句的结果作为子集,然后从该子集中再进行查询,这种一层嵌套语句还是比较常见的,但是根据经验,超过3层嵌套,查询优化器就很容易给出错误的执行计划。因为它被绕晕了。像这种类似人工智能的东西,终究比人的分辨力要差些,如果人都看晕了,我可以保证数据库也会晕的。 另外,执行计划是可以被重用的,越简单的SQL语句被重用的可能性越高。而复杂的SQL语句只要有一个字符发生变化就必须重新解析,然后再把这一大堆垃圾塞在内存里。可想而知,数据库的效率会何等低下。 4、 使用“临时表”暂存中间结果 简化SQL语句的重要方法就是采用临时表暂存中间结果,但是,临时表的好处远远不止这些,将临时结果暂存在临时表,后面的查询就在tempdb中了,这可以避免程序中多次扫描主表,也大大减少了程序执行中“共享锁”阻塞“更新锁”,减少了阻塞,提高了并发性能。 5、 OLTP系统SQL语句必须采用绑定变量
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> * </span><span class="keyword"><strong><font color="#006699">from</font></strong></span><span> orderheader </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> changetime > ‘2010-10-20 00:00:01’ </span></span></li><li><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> * </span><span class="keyword"><strong><font color="#006699">from</font></strong></span><span> orderheader </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> changetime > ‘2010-09-22 00:00:01’ </span></li></ol> |
以上两句语句,查询优化器认为是不同的SQL语句,需要解析两次。如果采用绑定变量
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> * </span><span class="keyword"><strong><font color="#006699">from</font></strong></span><span> orderheader </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> changetime > @chgtime </span></span></li></ol> |
@chgtime变量可以传入任何值,这样大量的类似查询可以重用该执行计划了,这可以大大降低数据库解析SQL语句的负担。一次解析,多次重用,是提高数据库效率的原则。 6、 绑定变量窥测 事物都存在两面性,绑定变量对大多数OLTP处理是适用的,但是也有例外。比如在where条件中的字段是“倾斜字段”的时候。 “倾斜字段”指该列中的绝大多数的值都是相同的,比如一张人口调查表,其中“民族”这列,90%以上都是汉族。那么如果一个SQL语句要查询30岁的汉族人口有多少,那“民族”这列必然要被放在where条件中。这个时候如果采用绑定变量@nation会存在很大问题。 试想如果@nation传入的第一个值是“汉族”,那整个执行计划必然会选择表扫描。然后,第二个值传入的是“布依族”,按理说“布依族”占的比例可能只有万分之一,应该采用索引查找。但是,由于重用了第一次解析的“汉族”的那个执行计划,那么第二次也将采用表扫描方式。这个问题就是著名的“绑定变量窥测”,建议对于“倾斜字段”不要采用绑定变量。 7、 只在必要的情况下才使用begin tran SQL Server中一句SQL语句默认就是一个事务,在该语句执行完成后也是默认commit的。其实,这就是begin tran的一个最小化的形式,好比在每句语句开头隐含了一个begin tran,结束时隐含了一个commit。 有些情况下,我们需要显式声明begin tran,比如做“插、删、改”操作需要同时修改几个表,要求要么几个表都修改成功,要么都不成功。begin tran 可以起到这样的作用,它可以把若干SQL语句套在一起执行,最后再一起commit。好处是保证了数据的一致性,但任何事情都不是完美无缺的。Begin tran付出的代价是在提交之前,所有SQL语句锁住的资源都不能释放,直到commit掉。 可见,如果Begin tran套住的SQL语句太多,那数据库的性能就糟糕了。在该大事务提交之前,必然会阻塞别的语句,造成block很多。 Begin tran使用的原则是,在保证数据一致性的前提下,begin tran 套住的SQL语句越少越好!有些情况下可以采用触发器同步数据,不一定要用begin tran。 8、 一些SQL查询语句应加上nolock 在SQL语句中加nolock是提高SQL Server并发性能的重要手段,在oracle中并不需要这样做,因为oracle的结构更为合理,有undo表空间保存“数据前影”,该数据如果在修改中还未commit,那么你读到的是它修改之前的副本,该副本放在undo表空间中。这样,oracle的读、写可以做到互不影响,这也是oracle广受称赞的地方。SQL Server 的读、写是会相互阻塞的,为了提高并发性能,对于一些查询,可以加上nolock,这样读的时候可以允许写,但缺点是可能读到未提交的脏数据。使用nolock有3条原则。 (1) 查询的结果用于“插、删、改”的不能加nolock ! (2) 查询的表属于频繁发生页分裂的,慎用nolock ! (3) 使用临时表一样可以保存“数据前影”,起到类似oracle的undo表空间的功能, 能采用临时表提高并发性能的,不要用nolock 。 9、 聚集索引没有建在表的顺序字段上,该表容易发生页分裂 比如订单表,有订单编号orderid,也有客户编号contactid,那么聚集索引应该加在哪个字段上呢?对于该表,订单编号是顺序添加的,如果在orderid上加聚集索引,新增的行都是添加在末尾,这样不容易经常产生页分裂。然而,由于大多数查询都是根据客户编号来查的,因此,将聚集索引加在contactid上才有意义。而contactid对于订单表而言,并非顺序字段。 比如“张三”的“contactid”是001,那么“张三”的订单信息必须都放在这张表的第一个数据页上,如果今天“张三”新下了一个订单,那该订单信息不能放在表的最后一页,而是第一页!如果第一页放满了呢?很抱歉,该表所有数据都要往后移动为这条记录腾地方。 SQL Server的索引和Oracle的索引是不同的,SQL Server的聚集索引实际上是对表按照聚集索引字段的顺序进行了排序,相当于oracle的索引组织表。SQL Server的聚集索引就是表本身的一种组织形式,所以它的效率是非常高的。也正因为此,插入一条记录,它的位置不是随便放的,而是要按照顺序放在该放的数据页,如果那个数据页没有空间了,就引起了页分裂。所以很显然,聚集索引没有建在表的顺序字段上,该表容易发生页分裂。 曾经碰到过一个情况,一位哥们的某张表重建索引后,插入的效率大幅下降了。估计情况大概是这样的。该表的聚集索引可能没有建在表的顺序字段上,该表经常被归档,所以该表的数据是以一种稀疏状态存在的。比如张三下过20张订单,而最近3个月的订单只有5张,归档策略是保留3个月数据,那么张三过去的15张订单已经被归档,留下15个空位,可以在insert发生时重新被利用。在这种情况下由于有空位可以利用,就不会发生页分裂。但是查询性能会比较低,因为查询时必须扫描那些没有数据的空位。 重建聚集索引后情况改变了,因为重建聚集索引就是把表中的数据重新排列一遍,原来的空位没有了,而页的填充率又很高,插入数据经常要发生页分裂,所以性能大幅下降。 对于聚集索引没有建在顺序字段上的表,是否要给与比较低的页填充率?是否要避免重建聚集索引?是一个值得考虑的问题! 10、加nolock后查询经常发生页分裂的表,容易产生跳读或重复读 加nolock后可以在“插、删、改”的同时进行查询,但是由于同时发生“插、删、改”,在某些情况下,一旦该数据页满了,那么页分裂不可避免,而此时nolock的查询正在发生,比如在第100页已经读过的记录,可能会因为页分裂而分到第101页,这有可能使得nolock查询在读101页时重复读到该条数据,产生“重复读”。同理,如果在100页上的数据还没被读到就分到99页去了,那nolock查询有可能会漏过该记录,产生“跳读”。 上面提到的哥们,在加了nolock后一些操作出现报错,估计有可能因为nolock查询产生了重复读,2条相同的记录去插入别的表,当然会发生主键冲突。 11、使用like进行模糊查询时应注意 有的时候会需要进行一些模糊查询比如
1 |
<ol class="dp-sql"><li class="alt"><span><span class="keyword"><strong><font color="#006699">select</font></strong></span><span> * </span><span class="keyword"><strong><font color="#006699">from</font></strong></span><span> contact </span><span class="keyword"><strong><font color="#006699">where</font></strong></span><span> username </span><span class="op"><font color="#808080">like</font></span><span> ‘%yue%’ </span></span></li></ol> |
关键词%yue%,由于yue前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%, 12、数据类型的隐式转换对查询效率的影响 sql server2000的数据库,我们的程序在提交sql语句的时候,没有使用强类型提交这个字段的值,由sql […]
View Details机械迷城文字攻略
一开始已经提示你点浴盆,点两下后再点机器人的身体几下,身体就掉下来了,然后点脑袋几下,这时候就缺一手和一腿了。和老鼠交谈后,老鼠要你拿布娃娃来换,拉长身体(鼠标放在机器人身体上可以向上拉长)拿到娃娃,交给老鼠,把鼠标放在游戏画面上角一秒左右会出现道具栏,右边是提示栏和攻略(打一个很简单的小游戏过关后出现当前关的图片攻略),非常有用,最好是出现图片攻略后把它截图存起来,不然你下次想看又要重打一次小游戏。把鼠标移到画面上方,选取娃娃然后交给老鼠,老鼠帮你找回一条腿,这时候你终于可以走路了.拿取换气扇上面的磁铁,再拿到旁边的电缆线,把电缆线和磁铁组合,(把一个道具放在另一个道具上)走两步后不能走了,踢弯水笼头,然后用电缆线组合磁铁的套索勾上水笼头顶部,从水里吸起手部,终于完整了。然后像荡秋千一样的荡过去.过关. 02 刚进入画面,就被人一脚踢翻,一个机器人走过来,拉了一下拉环,另一个机器守卫马上把桥放下来,让他通行。你也学那机器人一样拉一下吊环,警卫走过来,不给你放行,所以你需要乔装打扮一下.先拿一个那个红白的圆锥型路障,然后把其余的都拿起来扔掉,里面有一罐油漆,拿起油漆,走到装了白油漆的脸盆那倒入刚得到的蓝油漆,再把那个红白路障扔里面染染色,总算变成蓝色的帽子了.走到路灯旁,点击那几个像楼梯一样的铁杆,爬上去(上了一步后可以把下面的铁杆抽出来插到上面一格去)到最高,拉长身子去拿电灯泡,然后把电灯泡插到头上,再把帽子戴上,骗过守卫放下桥。眼看快走过去了,结果一脚踩上机油,摔下去了. 03 上楼梯拉一下拉杆,可以看到一辆矿车出来,出口的门打开才会让矿车通过,下楼梯,发现可以用扶手去勾拉杆,不过短了一点点。拉杆下方有小半截断掉的铁钩,把铁钩安在楼梯扶手上,这样就可以在楼梯下面拉动开关了,可是人还是没那么快速度跟着矿车一起出去,这时候发现了画面右上方有个像菜刀状的物体勾在大铁桶上,怎么拿呢?先来到铁轨旁的圆锥性铁箱处,蹲下身(鼠标点机器人身上向下拉),然后点右方的仪表,把仪表打到2和A,然后按下小红纽开关,上楼梯拉长身体,跳到上面的杆子上,去拿那个物品,将金色的物品放在铁轨上(注意位置,放到右边那根铁轨上),然后推楼梯的扶手,结果矿车翻了,拿下矿车的车轮子,坐上去后再拉一下楼梯的扶手,过关. 04 刚一出来,就发现一个胖子机器人来偷吃碳,吃完了一车就从一个窗口走了。我在这关卡了半个小时才明白意思,先到画面右方下面锁着的门旁边拿到勾在墙上的钥匙,再来到画面中间的锅炉处,点一下那个会闪的小红灯,右边的开关就打开了,然后点一下开关,这个开关有三个,明白开关的含义后就很简单了,三个开关表示锅炉上方爪子的三次动作,把开关拉到上方表示爪子会下落抓东西,把开关拉到下方,表示爪子会循环一圈,把开关放在中间,爪子不会工作.现在我们把第一个开关设定为转圈,就是拉下来,这个表示爪子会循环一圈,第二个设定为抓东西,就是把第二个开关拉上去,第三个开关又是转圈。这样的排列就是开关1拉到下方,开关2拉到最上方,开关3拉到下方(图示),设定好了之后按下右方的红钮开关.把图示里的线路的红线和黑线交换,爪子的转圈方向倒过来了,这时就不会先路过锅炉口了.下来后,再按下先前的开关,迅速上矿车,等爪子移动到胖子机器人出去的口子那里看准时机跳出去,过关. 05 还没出洞口,就发现胖子机器人和一个瘦子机器人把偷的碳装在一个容器里(造的好像是炸弹???)主角开始想像被他们抓到后的下场,(其实在游戏中一段时间不动的话,会出现不少主角的幻想,有的很搞笑)结果瘦子机器人发现了主角,一枪射下主角,然后胖子机器人把主角关起来了.牢房里有个双腿残废的机器人,和他对话后得知他想抽烟,所以现在的任务就是去弄支香烟给他,要抽烟的机器人旁边有一个水笼头被一堆绿色的草堵住了,先拿到绿色的草,然后转两次水笼头,得到水笼头.再来到马桶旁边,撕点卫生纸,还可以在马桶上个大号…拉长机器人,把得到的绿草放在马桶上方的灯泡上烤干烤黄,变成烟草,再用卫生纸和烟草组合出香烟,交给机器人,机器人很高兴,和你握手,结果手被你握掉下了,走到马桶附近的小洞处蹲下身,用刚才那个机器人的手伸到旁边的洞里去,结果旁边牢房里的胖子机器人囚犯吓到跳到瘦子机器人囚犯怀里…再把爪子向前面的洞口里伸,下方的洞里躲着一只老鼠,勾不到,上方的洞里伸进去后是一个铁箱子,箱子上面有一把扫帚,勾住箱子的脚,拉几下,扫帚就掉下来了,拿到扫帚后把先前得到的水笼头和扫帚组合,可以总算可以打开下水道的盖子了.跳下去,蹲下身子向前走,过关. 06 来到下水道尽头,发现下水道出口,打开盖子(用刚才的道具).发现瘦子警卫在玩射击打靶,趁他向后靠椅子,椅子只有两条腿着地的时候拉一下椅子腿,他就会摔倒,这时赶快把盘子里的弹珠都拿走,然后把弹珠椅子后面的扔在地上,警卫发现弹珠没有了,就会走到靶子处捡弹珠,趁他在靶子处捡子弹的时候,拿走他身上的钥匙,这个钥匙可以打开楼梯墙上的开关,那个开关控制牢房门,并且还接通闭路电视监视器的,监视器里正好是两个牢房的情况,从电视里可看到,右边是残废的烟鬼机器人的牢房,这个机器人走不动,另一个就是一胖一瘦的囚犯了,用钥匙打开左边的开关,放出胖瘦囚犯,再躲到桌子下面,等警卫发现有人逃跑去追时,被地上的弹珠摔了个狗吃屎,等警卫追出去后就安全了.爬出桌子,向前走,结果也被弹珠弄摔倒.上楼,来到一个安全的房间内,在天文望远镜里可以看到胖子机器人把疑似炸弹的东西安在一个高空的房子下面很隐蔽的位置,在门旁边有一个按钮,按下它,四周都黑了,只有夜光钟亮着,钟的时间指着04:45.不慌出门,再回到刚才警卫打靶子的房间,然后进入左边的房间,房间里就是先前的三个牢房,中间的牢房的天花板上有个通厕所的那个东西,拿到它.左边的牢房被一个数字锁锁着,输入04:45,打开房间门,点击那个柜子又出来个小游戏,非常容易,把绿色的六个点移动到中间的绿色图形里,如图所示.得到手枪,再把枪和通厕所的那个东西组合起来备用.07出门来,右边河太远,过不了,只能向左走.左走来发现前面漏水了。机器人最怕水,正好旁边有一位打伞的机器人大妈,和她交谈,得知想要她的伞必须要用狗来换,向回走,发现狗正躲在对面的角落里找东西吃,想抓到狗就要先把它引出来。上方有个控制台,不过垃圾箱太高,爬不上去,只有把垃圾箱向左边推,一直推到楼梯附近,然后来到大妈身旁的楼梯处有一个按钮,按下后又是个小游戏,要把下面的三个箭头移动到上面,把上面的三个箭头移动到下面,这些箭头可以移动一格,也可以在前面有障碍时跳过一格.如果移错了,可以点右面的按钮重置重新移.实在不会的再看攻略吧.弄好后压下左边的拉杆,把上面一层垃圾箱吸起来,然后再推上拉杆,吊起垃圾箱,这时候垃圾箱只有一层了,再把垃圾箱向右推推到最先的位置,先跳上小台,再跳上垃圾箱,拉长身体,上到控制室里去,移动油罐到合适的地方,滴下几滴油,赶快下来在下面等着,准备好道具枪,不一会狗就被油给吸引过来,一枪射中狗狗,然后去和拿雨伞的大妈交换,过关.08 上楼来和乐队的几个机器人对话在,得知鼓手机器人的鼓被坏蛋弄坏了,萨克斯风前面的按钮也没了,另一个家伙像炮筒的东西里藏着不知道什么动物.只能看到眼睛,向右边的门走,是一个酒(油)店。想找老板拿点油,结果老板要钱,里面一个桌子那坐着一个机器人,坐到他对面再点桌子,和他玩五子棋.我下棋水平太烂,下了N次不是输就平手,随便在网上找了个五子棋程序照着电脑的走法终于走赢…下赢后,电脑大怒,把棋子摔了一地,捡起电脑摔掉的五个棋子,看这形状和数量,估计正好可以安在萨克斯风上面,里面还有个房间有三个人在打牌,难道是在斗地主?先不管他们,门附近处捡到一个类似皮带的道具,不知道什么用。先把棋子交给萨克斯风机器人手里,当场演奏一番,结果被楼上的人大骂,还扔了个花盆下来.下面的门原来就是最先开始的出口,这里有一处在滴油,估计有用处.把类似皮带的道具放在苍蝇乱飞的污水处可以粘到苍蝇,原来这个是个粘苍蝇的东西,把苍蝇带到酒店里对着酒店老板用,趁机偷走油筒,再把油筒交给鼓手机器人,鼓手敲了一通鼓,楼上的大妈又怒了,这次把另一个有植物的花盆扔下来了.上楼梯向上走,走到一个广场,果然右边的坐轮椅的机器人想要油,把油壶拿到那里装满油出来给那人.终于轮椅可以转了,没想到那人又要我去找葵花油?左边的大妈机器人似乎在算某个难题还是什么,门上有两个标签,表示的含义暂时还不知道什么意思,从大妈旁边的楼梯上去,这里有个长腿梯子机器人在检修线路,顺着他的梯子爬上去抓猫,可惜够不着,把检修线路机器人的那个电源插头拔了,然后下来,等机器人回去插插头的时候,把红线扯一下,于是检修线路的机器会移动到另一边清理线路,再上去可以够到猫,不过还是抓不住,右边的路灯那好像是个拼图的游戏,还没玩呢,一块拼图就掉下来了,结果路灯上面的鸟一下把拼图抢跑了,走到路灯前的桥上,结果上面的鸟模仿你,你可以把机器人拉长再变矮,注意时机和节奏,几个回合后电线断了,鸟儿掉下来了,得到掉了的拼图.将断了的电线系在铁拉杆上,再把拼图完成,这时候铁栏杆就带电了,上梯子抓猫,猫跳到栏杆后被电到,再去把拼图的一块取下来,就能抓到猫了,抓到猫就能去解决第三个乐队机器人的麻烦了,把猫放进去,老鼠就跑出来了,乐队又是一番演奏,楼上的大妈这次把收音机给摔下来了.拿起收音机,再一次来到广场,画面下方正中间有个摇杆,把它拿出来,插到钟楼下面的洞里面,可以转动时针了.照墙上的提示把红色指针指向VII,把黑色指针指向∽符号,这时候门就开了,大妈进了门,可以看到大妈背后的纸片了,再照提示把指针指向6和VI,大妈出来了,对面的大叔从那边跑过来进了门,我们就溜上去拿到类似喇叭的道具,可以和收音机组合起来.再来到轮椅大叔面前,拉开下水道的盖子下去.下到下水道里,走到右边,桌子里有本工作手册.手册可以翻页,最后一页里面藏着一把扳手,那一排的管道也有一把扳手和一个铁钩子,下楼梯来,出水口处用铁钩子又可勾到一把扳手,拿到三个扳手回到管道处,要把管道的出水口关住,让水不再留,很简单,把几个阀门用扳手关死就行了,如图所示.这时再上去广场就可以看到水已经停了.下到下水道里把组合好的收音机放在桌子上插上电,然后点一下扳手机器人,就可以把水箱里的水放掉了,这下可害苦了下面斗地主的三个人,哈哈.再上到广场去,跳进空了的水箱里,就到了一个新地方. 09 按一下墙上的开关,电梯向下走,来到窗口处,可以看到一个厨房,大概是主角的爱人没想到被坏人抓到这里当起了厨师…这时候开始操纵MM了,先把锅端起来放到身后的地面上,再拿到橱柜里的包谷(玉米)把包谷放到火上,烤爆米花,噼里啪啦一阵响最后终于把烟囱上的棍子弄了下来.把棍子交给MM,让MM站在锅上,用棍子去钩开上面的通风管道,再钩出冻住的管子,把锅放回炉子上,把冻结的管道煮一下得到软管,再用管子点一下踏板,就可以把油用管子输到外面了.给电梯加满了油,拉一下电梯靠近窗户处的拉绳,就打着了,再就是开关的解迷了,把红色和黑色互相调换地方,下面的拉杆就出来了.很简单,连续将四个小球顺时针向右拉,三次后就搞定了,不懂的看图示方向. 10 把拉杆向上提,电梯就升到最高处了,最高处有一个转动的排气扇,点一下会出几个选择题给你做,不难,结果做完后什么都没发生,弄了半天不知道怎么回事,再一看留言里有一位叫很雷很阿伦 的朋友给出了后面一部分的攻略,原来是要故意做错才行…连续做错大概四道题目后,扇叶子就飞出去了.这时候就可以进去了. 11 进到一个温室里,下来可以拿到身后的两个抽屉,室内有两台机器(左边的裹有弹簧状的机器,暂时不知道是什么东西,只看到地下接着一根很长的线,可能是产生光合作用的机器?右边的机器类似幻灯机)这台机器都连接着画面最右下角的一个配电盒,点击配电盒,又是个小游戏。这个小游戏的规则就像是青蛙过河,你可以一开始设定一个起点,然后走完全部的格子才算完成.但是又不像青蛙过河那样可以让你一步步的走,这里只能让你选择一个方向,然后电脑帮你走到这个方向的尽头,看图便知.六个都搞定后,下面的两个开关就变绿了,把两个开关按下,左边的控制左边的机器,右边的开关打开后幻灯机亮了,把最先进来的两个抽屉状物体放入(幻灯片??),再按下幻灯机的开关却没起任何作用.来到画面左方的门那里的开关可以发现这个开关好像一只蝴蝶,温室里只好有只蝴蝶在飞,蝴蝶在栏杆上停下来的时候,可以看到它身上有小红点.和开关点亮后一样,所以谜底应该在蝴蝶身上.但是蝴蝶停下来时我根本抓不到蝴蝶,点一下道具画面右上角类似电灯泡的那个提示,他提示要把植物载到花盆里,推开左边的机器,正好有个空花盆,把先前在三个摇滚机器人那边得到的植物放入,最右边的花盆里有只丫型小棍子,拿着备用.再把左边那台有弹簧的机器对准刚载了植物的花盆,然后到画面右下角的开关处按下左边的开关,这时候经过光合作用,植物马上就长大了,开了一朵向日葵.过来摇动向日葵,可以得到瓜子,再把那个光合作用的仪器推到最右边的那个类似食人花的植物那再去开动开关,那个植物就活过来了,上楼拿小棍子撑住食人花的嘴巴,再点它可以从它肚子里拿出一个放大镜,放大镜正好观察蝴蝶身上的红点分布,我观察的是这样的,不知道红点是不是随机的.下去照红点开锁,门就开了,刚才提示里有提示过放大镜可以放到幻灯机上,把放大镜放到幻灯机上后出现了一幅向日葵的解说,按下幻灯机的开关的上,有提示可以在某个机器上炼油,其它的图不太清楚是什么意思,去画面右下方关掉右边的幻灯机,再换上另一个幻灯片,再打开开关,也不太看不懂什么意思,中间还夹杂着蝴蝶的红点分布图.反正不懂,出门吧. 12 出门来到新场景,对面有个大个子机器人手里还抱着个玩具挡住了一个门,过去打个招呼,他放下手里的玩具没走两步就摔倒了,估计他需要电池类的物品.要帮他找到电池才会让路.道具栏右方的提示要榨油,估计画面右边那个小水泵的东西就是榨油机了,伸长身体,把瓜子放到那里面,然后抓住拉杆上下运行,一会儿油就出来流到楼下的水管里去了,这时候才想起,应该把先前得到的油壶放在流出的那地方接油,没办法,回去继续摇向日葵,得到瓜子,把油壶放好,再榨一次.总算得到了葵花油.得到油了,怎么回去呢,找到了半天才发现大个子机器人左手边的铁管子可以滑下去. 13 滑下来向上走就回到广场了,把油交给坐轮椅的机器人,轮椅机器人交给你一个东西,看上面的画像是类似FC上小蜜蜂的游戏,想起先前在电线杆那引诱鸟摔下来电猫的那里的门上面正好有这个画面,先捡起轮椅机器人扔掉的绷带,然后前往广场左边楼梯那边的游乐场.将从轮椅机器人那里得到的卡片插入门前的锁,门就开了. 14 进门就看见三台游戏机,上面编着号,上前玩玩都没反应,观察最左边的有个座椅带链条的机器,侧边有根拉杆,并且有123的编号,估计是控制这边的游戏机的.坐上去,原来是个类似自行车发电的游戏,用鼠标逆时针转圆圈,一直到进度表到红色那边的顶头,这时这边三台游戏机上面的灯会亮,1号和2号都亮了,3号的灯泡炸了…打开1号游戏机,是小蜜蜂游戏,根据提示可得知1000分可以换一个金币,努力吧,1000不难的,用键盘玩很容易的,键盘上的上下左右键控制方向,空格键是子弹(打蜘蛛的那个看攻略的小游戏也可以用键盘),打到1000分后,机器里吐出一个金币,拾取金币,然后玩2号游戏,2号游戏也是个动脑筋的,要把红色的小框放到大红框里,门就会开了,这里我一开始不知道是什么意思,玩打蜘蛛小游戏看了攻略的,所有的走法都有,过不了的玩次小游戏看攻略吧,出来攻略后把图截下来保存起来看比较方便.解完几个迷题后,又得到一个小金币.钱到手了,可以去广场那里买电池了.2个金币正好买两个电池,现在可以把电池去交给那个大个子了.再从广场上那口井里跳下去(广场上有几个电灯泡你摸一个就会炸,不知道有什么用).又来到电梯处,想上去没反应,看着马达和排气管没响,估计是没油了,再把墙上的紧急下降按钮按下,找MM加满油.打着火,再上去经过温室,找到大个子机器人,交电池给他,他竟然不要,再点他,原来他要的是电池组,把电池和绷带组合成电池组,再给他,他总算让开了路.怎么打不开门?原来门右手边有个小按钮,按一下才能开. 15 进来一看,应该是个类似电梯的房间,墙上有几个看不懂的符号,最上面有个摄像头会跟着你转动.右边大盆植物旁有个小门打不开,左边这个开关又是个谜题.原来墙上的符号就是楼层的图形,比如地下一楼(-1)就是那个类似八芒星的图案.在大盆的植物花盆的左边可以点击,会挖出一小点土,然后电梯里有个小门开了,一只洗尘器跑出来把泥土吸干净又跑回去了,再弄点土在地上,吸尘器又跑出来了,抓住吸尘器,然后会从他身上抖出电梯开关上掉了的一个小灯,把小灯安到电梯开关的右上角,这时可以弄出0楼的符号了.(这里不要学我,原来0楼就是通向广场的路,就是先前铁管下去的地方)出去了还回不去了,只能再次从广场的空水池里绕路找MM加油坐电梯再走一遍…)玩到这里卡住了…观察了一会,墙上的二楼的符号被树叶挡住了看不见,把身子拉长,再点树叶,就可以拔开树叶,看到二楼的符号了,原来是个五角星图案…把电梯弄成五角星图案就可以上2楼了.出电梯,来到一个小别墅.右边是厕所从马桶里望下去,可以看到胖子机器人偷放的炸弹,打开水笼头,里面流出来的是机油.上面有一个剪刀可惜够不到。墙侧面上方有个洞,不知道能不能爬.来到大厅,画面左侧的开关可以控制吸尘器前进和后退,把吸尘器移动厕所里,拉长身体就可以把剪刀拿到.拿到剪刀后,再把吸尘器移到中间吊着的蜡烛台处,站上吸尘器,用剪刀去剪蜡烛台,没想到触电了,原来这不是蜡烛台,是个吊灯???画面最右方有个闪电样的配电盒子上面还有个小灯,估计就是电源开关了.打开盒子,果然灯都熄灭了.再上去把吊灯剪下来,再看一下提示,好像是把吊灯系在吸尘器上.结果还是上不了楼,提示炸弹快炸了,估计是要从厕所的洞里爬出去拆炸弹,再把电源打开,把吸尘器移动到厕所里,结果还是不够高,不可能爬上去.这时候可以取下挂在吸尘器身上的电灯,把它勾在马桶上,难道是用吸尘器移开马桶,从下水道出去拆炸弹???回到大厅去开动吸尘器,果然一阵灰尘飞起,再跑到厕所一看,马桶被打开,地上一个大洞,估计可以去拆炸弹了.结果点那个洞,不能下去,看了附近,也只有卷筒的厕纸可以用了,点一下厕纸,果然是利用厕纸下去了.下去后点那个像煤气罐样的炸弹,利用荡秋千的原理,跳到炸弹上去,一上去就马上计时了.这里也是个小游戏,考眼力的,要看清楚炸弹的线路,(小游戏的规则就是找线路,比如那个1号线路的另一头就塞上A,2号线路的另一头就塞上B,3号塞C,类推)我为了截图加写攻略,结果时间到了…然后就是一段动画,这个城堡爆炸了,我以为游戏结束,刚后悔很长一段时间没SAVE存档,没想到这游戏还挺贴心,弄了个类似波斯王子时之砂的设定,时间倒退,又回到拆弹之前.害怕时间不够的朋友不用怕了,不会挂的.解除了定时炸弹后,再用厕纸爬回厕所,总算可以上楼了,楼梯的左手边有一个机器人,和他对话可以看到一个小故事,有点意思,好像是说他在某个星球里被一群探索星球的太空机器人发现然后抓回到这里来的.上楼来,可以看到一个很大脑袋的机器人在唠叨或吃什么,和他对话,主角机器人会回忆被当成垃圾装走的原因。画面左下角一堆仪器靠最里门上有个红色开关,点一下就出来一个画面,又是个小游戏.这个游戏的规则就是把三个绿色的球移动到绿色区域就行了.如图. 解开两把锁后,可以得到里面的电源插头线,把电源插在大脑袋机器人身上,又会出现一个小游戏.大概意思好像就是要去找钥匙开锁拿枪杀光其它人…这里先要拿到钥匙,然后再消灭其它敌人.拿钥匙的路线是右—右—下—左—左—上—左下—钥匙,然后回去开锁拿枪杀人.那些发光的蓝色十字是加血的.鼠标控制起来不是很灵活,好在加血的很多,找出所有人干掉过关.大脑袋机器人把电梯上另一个掉了的灯给了你,这下可以回电梯,去地下一层救MM了.这里一堆仪器的那个黄屏幕的机器暂时还不知道怎么用,不管它,救MM要紧.
View Details曹德旺语录
1.“我必须保持优秀,否则会造成羞耻,不仅给评委们,而且会给整个中国。” 2009年5月30日,在摩洛哥蒙特卡洛举行的颁奖大典上,曹德旺力挫群雄,从来自世界43个国家10000多名企业家中脱颖而出,荣获有着企业界奥斯卡之称的“安永企业家奖”,这也是该奖项设立23年以来,首位华人企业家获此殊荣。 而曹德旺在颁奖典礼的这句获奖感言,同样令全世界动容。 2.我们做每件事情,都要经得起时间和历史的考验。 3.我有今天的成就,不是因为我伟大,而在于我背后有无数普通人默默无闻的努力和贡献。 4.我有今天的事业,离不开政府的政策和社会各界的帮助,我欠社会的太多。 5.人要有良心,我对社会始终抱着感恩的心态,我是通过自己的力量来帮助社会。 6.我是从最底层上来的,这是我一生最大的财富。我最困难时,一天才赚2分钱。我结婚那天,才第一次穿上鞋,袜子还是我哥的。一包七分钱的香烟都买不起。 7.我没有什么朋友,企业界的、经济学界的,我不跟他们玩,因为没什么意思。 8.我可以很自豪的说,在经营上,我是一流的高手。没有几个人做企业能和我比。 9.我是企业家,不是富豪。 10.做为企业家,在准备创大业时,一定要记住,做小事情靠技巧,大事靠眼光和人格魅力。 11.我有勇气,有智慧;我的前瞻性很强;对待别人,我很仁慈;我敢于承担责任,任何事情我都敢担当;我的皮比较厚,人家讲我好讲我坏,我都表示感谢。 12.功利心都那么强了也不好。真正碰到问题了,利益集团必须站出来,削弱你的利益。你身体好,体质好,你不自断手臂谁断? 我想成立这个基金会不是为了在历史上留下什么个人印记,我是希望起到推动这些富豪慷慨解囊,引起政府的重视(指解决目前这种通过捐赠股票成立慈善基金会所遇到的一些政策、法律法规等方面上的问题)。我开门把这个东西送给你,你也得把手伸过来接回去啊。 13.佛家讲,布施有三种,一种是财施,像我这样的捐款,只是有钱人做该做的事情,功德最小。积德要“无相布施”,就是不要宣传,你才会积一点阴德。咣咣地曝光,我那一点点福德都没有地方拿了。你还以为是好事啊? 14.貔貅没有屁股,是只进不出的,很小气。我特意挖了个大屁股,做吉祥物来说的话有进有出。财富如果不漏的话不撑死掉你,应该要漏。 15.我没有见过官位财富可以绵延不息的。 16.留给子女的不应是财富,而应该是智慧和人品。 我女儿到香港去,看到一件衣服很中意,但标价1000多元。我女儿犹豫了好久,都舍不得买,听说深圳有盗版货更便宜,差点买了盗版货,后来被香港公司的一位职员制止了。 17.富豪榜评得不正常,按正常来评的话,曹德旺应该在十位前,不在十位后。有的他根本就比我差很多,没有钱。人贵在站正坐直,你遵纪守法,拥护跟支持政府,你没有偷税漏税,走私,你怕什么呢? 18.很多人说曹德旺没有读书,他们错了,曹德旺读的书比谁都多,我什么书都读,而且我悟性很高,记性很好。不管多忙,我现在每天还是要读两个小时的书。 19.我们要为中国人做一片自己的汽车玻璃,这片玻璃要代表中国人走向世界,展示中国人的智慧,在国际舞台上与外国人竞争。 20.我的玻璃可以装在奔驰、宾利车上,你说质量好不好? 21.办厂二十多年来,我没向任何官员和银行送过一盒月饼。以人格做事。 22.我几十年来,每天工作16个小时,没有休息日。 23.我不做房地产,不做娱乐业,不做煤矿,我是做制造业,你说我那个钱,赚的辛苦不辛苦? 24.(反倾销)他美国人拳头大,就可以欺负我哪?我就把事情捅大,让全世界来评评理!就是倾家荡产,我也跟他干。 花再多的钱也不在乎,但中国人的骨气不能不在乎,我们打的不是官司,是荣誉。打,一定要打赢! 打反倾销官司时,开始很多人都很同情我,我说你千万不要同情我,曹德旺活的很潇洒,我在和世界500强打官司,是和美国政府打官司,不是和美国街边卖菜的打官司。 25.我不能让我的员工在家等死,07年北京公司有个实习生田军得了白血病,他还不是我们正式员工,我为他花了一百多万,至于能不能治好,就看他的造化了。 26.福耀是中国股市唯一一支现金分红超过募集资金的上市公司,而且是翻番。福耀就是要用这种与众不同的方式,来告诉天下人我们是一家值得全社会信赖的真正的优质公司,这才是福耀的价值所在,才是中国股市健康发展的希望。试想如果中国上市公司都这么做,中国股市还会是现在这个样子吗?中国股市对中国经济的贡献将绝对比现在大得多! 27.福耀是中国人的福耀,不是我曹德旺的福耀。 28.如果为了一点钱,我们就不必这么努力,我们为的是一片属于中国人自己的汽车玻璃,树世界级的行业典范。
View Details台湾李敖有话说:评价毛泽东
从小可以喻大,我们看到人类很多事情,看到了很多革命的先行者,在革命成功了以后,他要怎么面对。我跟大家讲过,我们中国在一九四九年以后,就发生了这种现象。一九四九年以后,当那个反革命的蒋介石兵败山倒,赶到了台湾去的时候,那些伟大的革命者在中国的大陆,他们就面对了一个问题,我们现在要建设一个新的中国,新的中国站起来了,我们要建设新的中国。可是这些搞革命有一手的专家,他们对建国不一定有一手,有的时候他会跟不上,所以呢,就正如毛泽东所说的,他们也在摸索,并不是一开始我们觉得什么都会,不是的,我们也在摸索,在摸索的过程里面,就会走错路,走错路就会付代价,这就是邓小平的最后的统计。在《邓小平文选》里面,我给大家展示过几次邓小平的统计,就是从大跃进到文化大革命,前后浪费了二十年,换句话说呢,有二十年的时间是走了错路,二十年时间走错路,我们付了太大的代价。这就是说,我们虽然是革命的先行者,我们虽然是发明了留声机的人,可是当留声机不断地进步的时候,它的唱片在进步的时候,要由滚筒式变成黑胶式,黑胶式还要变成很薄片的,像面包一样,有薄片厚片之别的时候,这个时候你要转过来,要跟著上,还要迎头赶上,还要超越前进,这个时候就很费力了,这就是整个的一个情况。 有人在网站里面谈到我李敖,说你李敖有点偏心哦,你对中国的批评,凡是涉及到国民党部分,涉及台湾的部分,你就比较苛刻,比较严格,涉及到*部分,中国大陆的部分你就比较宽大,比较松,你是不是两面人啊?国民党关了你,你就骂它骂得狠,对*你就客气,是不是啊?我跟大家说,你太小看了,把我李敖看得太小了,你小心眼,你的见识啊就变小了。中国古代一位了不起的思想家,也是政治家叫做晏子,晏子有一次呢出门,有个女孩子在路上拦他,漂漂亮亮的这个女孩子啊,就要私下跟晏子讲一句话,什么话呢?她跟晏子说我有一件事情啊要拜托你,什么事情呢?说我爸爸遭遇什么困难,我希望你帮我爸爸解决这个问题,什么代价呢?我愿意陪你睡觉,许身给你陪你睡觉。这个晏子就很感慨,感慨什么呢?说我给人家什么印象,什么坏印象,居然使这个女孩子觉得她陪我睡觉,认为用这种代价,我就会帮她忙,就表示我根本品格很低嘛,我的水准很低嘛,水平很差嘛!人家用这种标准来看我。 我告诉大家,用很多标准来看人的时候,不要小看了人,我李敖就国民党关了我,我就恨国民党啊?*没关我,我就捧*?太小看了人,我是告诉大家,为什么两个标准不一样,其实是一样的,就是说,我们要给他们时间,什么时间?一九四九年中国*抢到了中国的统治权的时候,是一穷二白,国民党把能搬走的全搬走,能炸掉的全炸掉,留给中国大陆是两百万土豪劣绅、流亡土匪要你清除,清除这个台面,国民党把整个国库九十二万两黄金搬到台湾去,请问*在接受这个摊子的时候,要使中国能够慢慢复原,是不是要一段时间?因为被国民党打劫得这么严重,破坏得这么严重,赶上了美国人在韩战出了问题,高丽战争出来了,又为了中国的安全,中国的尊严,一定要跟美国帝国主义打一仗,这个时候又打了这个战争的时候,中国要不要付很多代价?所以这个时候啊,我们发现连吃顿饱饭都是很难的时候,谈什么事情,先谈吃饭要紧嘛!就这样子啊,是在这个情况底下,慢慢地成长起来的,然后再经过自己的错误,从文化大革命再往前算,从大跃进开始,如邓小平所说,我们耽误了二十年,说这个时候呢,我们在摸索里面前进,好容易现在由于邓小平最后他处理的方法的正确,总算目前现在开始走这条路了,不是吗?中国不是这样走来了吗? 我李敖小的时候,亲眼看过日本兵骑著马,在我们的国家里面那样子耀武扬威,所以对我这个年纪说起来,一个强大的中国对我是非常重要的,对我的信仰是非常重要的。所以我在跟大家讲,我们中国讲富国强兵,什么叫富国强兵?大家看,中国的《二十四史》,就《二十五史》里面,《史记》里面的,《孟子荀卿列传》里面的一段话,他说当时的秦国,秦用商君,就是商鞅,富国强兵,这四个字太吸引我了。我们中国太穷了,谈不到富国,可是强兵很重要,为什么呢?因为从鸦片战争以来,中国人被洋鬼子打,我们中国国力太弱了,这个洋鬼子里包括东洋鬼子,包括日本人,所以跟我说起来,我们中国有一个武力,使全世界的洋鬼子、东洋鬼子不敢打我们,这个对我李敖太重要了,对我们中国也太重要了。今天享受到这种结果的人,知道不在话下,当然没人敢打我们,可是你知道我们付了多少代价吗?我们花了一百五十年的时间,花了千万人头落地的代价,才换得了最后中国还没有富国可是先强兵的这个境界,我们付了那么多代价。 通过这些比较可以看出,中华民族五千年的历史上,第一位巨人毫无疑问是毛泽东,因为他起到了其他人无法代替的作用。他诞生的时代,中华民族正处于历史上的最低点,面临生死存亡的危急关头。众所周知,当时的世界上没有谁瞧得起中国人,“东亚病夫”和“华人与狗不得入内”成为中国人深切的耻辱和隐痛。正是毛泽东使中国站起来了,朝鲜战争使全世界都对中国刮目相看,从此中国人扬眉吐气。中国成为举世公认的世界军事强国。 但中国成为世界军事强国,并不等于世界经济强国。20世纪强国与弱国、富国与穷国的主要标志是工业化的程度。又是毛泽东使中国在短短二十多年内走完了西方发达国家上百年才能走完的工业化道路,成为世界主要工业强国之一。到1980年,中国的工业规模已经超过世界老牌工业强国英法两国,直逼在西方强国中坐第三把交椅的西德(见美国著名学者保罗-肯尼迪的名著《大国的兴衰》)。20世纪80年代中期,中国的工业总产值跃居世界第三位。 目前许多人有一种错误认识,即认为毛泽东不懂经济,导致中国大陆的发展落后于同期的日本和“四小龙”。这是当今最大的谬误。首先,日本和“四小龙”的起点与中国不一样。日本在明治维新后就开始了工业化,到二战时,日本能够年产上万架飞机,而中国连一架飞机都不能制造。许多人以为德国和日本经过二战,变成了一片废墟,其实战时德国和日本的工厂都隐藏到地下或者分散,美国的飞机根本奈何不得,否则美国根本不需要扔原子弹和拉拢苏联出兵,用飞机将倭国工厂统统炸光就行了。手持木棍的日本兵还抵挡美国人吗?日本到1945年7月仍有月产上千架飞机的能力,比1942年的飞机月产量还高,说明其工业基本完整无损。何况日本拥有一支宏大的科技队伍,以及一支熟练技术工人大军,这是旧中国根本无法比拟的。因此到新中国成立的1949年,日本实际要领先中国80年。即使是台湾和韩国,由于它们曾经成为日本的部分领土(殖民地),整体水平也要领先中国大陆50年(谁如果不信这一点,可以去阅读著名作家萧乾在1946年写的《冷眼看台湾》一文)。而香港和新加坡作为城市,以整体水平来衡量当然要比中国大陆(大多数地区是农村)发达得多。何况它们还是英国远东殖民地的两大中心城市,英国从殖民地掠夺的大量财富都集聚到这里,所以中国大陆与它们的出发水平不同。 经过毛泽东时代的短短三十年,中国实现了从农业国到伟大工业强国的历史性跨越。中国实行的是赶超战略,即瞄准西方先进的工业水平,别人有的我们要有,别人没有的我们也要有。到毛泽东去世前夕,几乎所有西方有的中国都有了。天上有喷气式飞机,地下有汽车、火车和轮船,卫星、导弹、原子弹样样俱全。而“四小龙”能造什么?它们是典型的殖民地经济,只能造服装鞋帽之类。它们赶上了冷战时期的好时光,那时西方殖民地各国的反帝独立斗争风起云涌,对西方来说,只有在美英刺刀保护下的“四小龙”才是安全的,因此投资都集中于它们,造成了它们的短暂繁荣。但它们没有发达的制造业和核心技术,繁荣根本长不了。20世纪初期的阿根廷靠养羊也曾富得流油,但现在如何呢? 冷战结束后,“四小龙”的经济发展很快陷入困境,而中国却仍在高速前进,因为中国有自己的制造业,几乎什么都能够制造。而中国的工业化基础正是毛泽东为中国人民奠定的。 在毛泽东时代,中国与西方强国的经济差距飞快地缩小着。美国耶鲁大学教授莫里斯-迈斯纳称毛泽东时代为“世界历史上最伟大的现代化时代之一,与德国、日本和俄国等几个现代工业舞台上主要后起之秀的工业化过程中最剧烈时期相比毫不逊色。”美国在20世纪70年代出版的《日本与俄国的现代化》一书中认为,新中国取得了其它任何国家都没有取得过的成就。但是近20年来却有一种流传甚广的谬论,认为1960年中国的gdp与日本相同,1980年则降为日本的1/4,到1985年更降为日本的1/5。其实这是某些经济学家的错误计算。他们是用当年中国和日本的gdp各为多少美元进行比较,而忽略了两国货币对美元汇率的变动。80年代前后,日元对美元大幅升值,使日本经济出现了虚拟膨胀;而同期人民币对美元的汇率大幅下降,使中国经济总量看上去似乎大大“缩水”。因此,用美元总值进行的中日经济比较,就与实际有很大的差异。事实上,正是在20世纪80年代,中国经济的实际规模已经超过日本。还应该说明的是,所谓日本在20世纪80年代后期超过苏联成为世界第二经济强国,也是日元升值使日本经济凭空膨胀给人们的错误印象。如果比较当时苏联和日本的工农业总产量,日本较苏联相距尚远。例如,苏联解体前的最高年钢产量和最高年发电量,日本至今也未能超过,而中国到90年代已经超过。今天,中国钢产量是日本的3倍,年发电量是日本的1.5倍。目前中国的钢、煤、水泥等许多主要工业产品的产量,已经超过美国居世界第一。 诚然,毛泽东时代的中国人民生活水平提高得并不是很快,但这是为了筹集中国工业化的资金。西方工业化的资金来自殖民掠夺(英法)、剥削黑奴(美国)、对外征战获得赔款(德日)。而象苏联和中国这样的社会主义国家,只能首先节衣缩食积累工业资金,将自己的工业发展起来,然后利用工业创造的财富享受美好生活。在毛泽东时代,中国首先建立了大量的矿山铁路,然后是钢铁厂,再以后是机械厂。当机械工业初具规模后,就可以建立各种轻纺厂、自行车厂、电视机厂等等,以改善人民的生活。但毛泽东就在中国即将从积累时代转向消费时代的时刻离开了我们,没有看到人民生活获得极大改善那一天的到来。这是他一生的遗憾。而许多不明道理的人,却将毛泽东时代看成贫穷的时代。 令人遗憾的是,最近一二十年来,中国的某些经济学家被四小龙的暂时发展所迷惑。在他们的鼓吹之下,中国一度采取了与四小龙相似的经济发展路线,即追求的是赚钱而不是赶超。这些年来,中国利用外资建立了许多低水平的加工工业,赚了一些钱,却没有集中力量进行艰苦的技术赶超,导致中国的技术水平与西方的差距越来越大。毛泽东时代,中国曾经取得了许多举世瞩目的科技成就;而最近一二十年来,中国取得了哪些引以为傲的技术成就呢?也许只有飞船上天了,但这是靠毛泽东给我们留下的技术底子。如果当初我们按照毛泽东“中国人民有志气,有能力,一定能够在不远的将来,赶上和超过世界的先进水平”这句话指引的道路走下去,中国今天已经是与美国并立甚至超过美国的现代化强国。 目前那些反对毛泽东的人,有些是政治立场问题,但更多的是不明真相。他们看到西方发达国家人均2—3万美元的现实,对比中国目前的人均1000美元,未免埋怨毛泽东没有让他们过上西方的富裕生活。其实这里有一个很大的误会,西方和中国的物价不一样,无论西欧、美国还是“四小龙”,物价都比中国高得多。由于各国的物价不同,用美元总值来比较各国的gdp就会与实际有很大的差距。如果要真正比较各国的经济实力,只能用工农业总产量来衡量,这是不受价格影响的。在工农业总产量方面,今天的中国要领先日本和所有的欧洲国家,与美国相比也绝不逊色。中国人的生活水平与美国等西方国家相比,绝不是许多人所认为的天上地下般的差距。如果这些人有幸到“四小龙”实地生活体会一下,就会发现“四小龙”的绝大多数老百姓并非他们想象的那样富得流油,日子艰难的大有人在。即使是欧美发达国家,大多数老百姓生活同样是紧巴巴的,基本上在银行没有存款。欧美国家的居民通常只生一个孩子,绝不是他们有计划生育的意识,而是难以负担两个孩子的供养和教育费用。 有些人认为毛泽东是**独裁。他们不知道,西方民主制度的特点是一盘散沙,软弱无力。美国也承认,凡是实行了美式民主的发展中国家,至今未有能够在经济方面取得成功的。20世纪初期德国和日本工业化进展最快,它们的君主**制度起了重要作用,因为强大的中央集权体制使它们能够将资金集中于重工业。战后,日本和“四小龙”在它们的高速发展时期,都不是真正的民主国家,而实际是**国家(日本是自民党长期执政,新加坡是李光耀家族掌权,香港是殖民统治,台湾和韩国是军人独裁)。中国没有在20世纪后半期实行美式民主,是中国的大幸。可以毫不夸张地说,如果要阻止中国在21世纪成为世界首强,最好的方法就是实行欧美式民主制度。菲律宾近年光荣地实行西方式民主,选出的总统都是演员和美女。我们不难想象,如果在中国实行西方式民主,那么中国众多的小燕子迷们就会将身穿日本军旗装的赵薇抬上总统宝座。当然赵薇的军旗装事件很可能只是无心之失,但如果被扶上去是另外一位为金钱不惜匍伏在洋人胯下的女明星,由这样的人来领导伟大的中国赶超西方,简直就是天大的笑话。 那些“民主斗士”认为,一党执政使权力得不到遏制,无法有效地制止腐败。请问:世界上所有实行了西方民主制度的国家,可有任何一国能够做到毛泽东时代的中国那样清廉?印度和印尼这些国家实行了西方式民主制度,是否制止了腐败呢?从近年它们先后荣幸地当选全球最腐败的国家,人们不难得出答案。当然,中国是要走民主之路的,但绝不能照搬西方式民主。 毛泽东给中国带来了社会主义制度。有些人认为社会主义的大锅饭不能使人们发挥积极性。其实,西方现代企业都实行所有权与经营权分离的制度,由专门的管理层经营企业,老板只占有股份。但西方拥有一套严格的奖罚制度,谁要是搞砸了企业,他将终生没有饭碗;而中国的官员搞砸了企业,还可以易地为官。可见,中国缺乏的是有效的奖罚机制,而不是所有制的问题。那些鼓吹中国应全面实行私有制的经济学家们,都应该埋名隐姓到私企去体验一下生活,亲身尝尝老板和工头们拳脚的滋味。有过这一番体验后,相信他们中有良心的人会纷纷从右派变成左派。 有些人拿今天朝鲜的情况,认为毛泽东时代的经济不行。其实朝鲜是战后经济发展最快的国家之一。即使按照台湾方面的估计,20世纪80年代朝鲜的人均国民生产总值在亚洲也仅次于日本和“四小龙”,而高于所有其它实行资本主义制度的亚洲各国(不包括西亚石油国和作为资源富国的马来西亚)。目前朝鲜的经济困难,主要是其主要贸易对象苏联东欧集团解体和西方封锁的结果。我们可以想象一下:将韩国封锁几十年会是怎样的情形?也许不用几十年,只要几年就可以使其制度优越的神话彻底破灭。 毛泽东时代的另一大特色,是全体中国人民具有很强的凝聚力,这是中国成为现代化强国必不可少的条件。人们看看那些近代发展最快的国家如日本、德国和苏联。德国和日本由于统治集团大肆宣传本民族优越论,客观上造成德意志、大和民族具有很强的凝聚力。苏联是用共产主义理想凝聚人心,也使其各民族具有高昂的战斗力。中国在毛泽东时代,可以说是亿万军民众志成城,世界上没有任何国家敢惹。可以断言,如果毛泽东在世,给美国天大的胆子也不敢炸中国大使馆。令人遗憾的是,毛泽东逝世以后,中国某些不明道理的知识分子,大肆攻击毛泽东、*和社会主义制度,而推崇西方的所谓民主(他们忘却了孙中山的教训),造成社会人心混乱。他们并不真正了解欧美和“四小龙”,盲目推崇西方,使中国人在一夜之间丧失了民族自豪感和凝聚力,众多的人才外流。现在许多有点钱或技术的人都想移民西方,许多有点姿色的女人也都想嫁西方人(哪怕是白发老翁)。本来香港和台湾根本不值得我们效仿,它们近年的萧条已经说明了其殖民地经济模式的失败。但在这些知识分子们的美化下,香港和台湾被许多人看成了天堂,那些没有文化、没有才干,只会吼几嗓子的港台歌星们,竟然成了内地众多少男少女倾慕的对象。在毛泽东时代,中国的少年儿童们高唱着气壮山河的革命战歌,这样有战斗力的一代没有任何国家不害怕;而现在中国的少年儿童们沉迷的是港台的靡靡之音,哈美哈日哈韩。这样,美国会把中国放在眼里吗? 我们不妨回望千年:唐朝在唐太宗时代,响彻天下的是雄壮的“秦王破阵乐”,此时的大唐积极进取,国威远播,万国来朝;而到唐玄宗时代后期,盛行天下的是淫靡的“霓裳羽衣曲”,此时正是“渔阳鼙鼓动地来”的衰落前夜。 有些人攻击毛泽东的大跃进和文革死了多少人。其实这种谣言任何人只要用脑袋想一想就会不攻自破。比如,海外说大跃进饿死了3000万人。要知道,当时中国只有6亿人口,如果饿死3000万人,就等于20人中饿死一个。换句话说,几乎家家都有亲戚在大跃进中饿死。如此大量的死亡数字必定会引起全国震动。人们不妨看看周围,每百家有几家在大跃进中死过人?这样就很容易知道此种说法是何等荒谬!而在旧中国,饿死人的数量是惊人的,仅1945年湖南就有500万人饿死。今天的亚非拉美广大发展中国家,每年都有1500万人饿死。以中国人口居世界五分之一计算,如果没有毛泽东,中国现在每年应有300万人饿死,这50年来应该有1亿到1.5亿人饿死。象今天的印度,死个人就象死只蚂蚁一样,印度可是拥有某些人向往的西方民主议会制度的。 诚然,同历史上的所有伟人一样,毛泽东也不是没有犯过错误,但他对中华民族的贡献远远大于他的过失。正是他旋转乾坤,把一个备受欺凌、人民做牛做马的黑暗旧中国,变成昂首挺胸、人民当家作主的光明新中国。从毛泽东诞生的1893年到新中国成立的1949年,仅仅在这半个多世纪里,中国死于饥饿、营养不良和缺医少药的人,就可以说数以亿计,全国人的平均寿命只有34岁。新中国的建立,彻底改变了中国广大人民的命运,使他们摆脱了原先悲惨的生活状况。众所周知,毛泽东时代为筹集工业化的资金,曾经实施工农业产品“剪刀差”,导致农民的生活处于比较低的水平,而且“大跃进”的灾难也发生在农村,但时至毛泽东逝世几十年后的今天,中国农村的众多家庭仍然悬挂着毛泽东的画像,甚至在改革开放后富裕起来的沿海地区农村也一样,没有任何人的强迫命令,完全是农民们自发的行动。农村的老一代人都经历过旧社会,他们知道在风雨如晦的旧中国,千家万户啼饥号寒,流离失所,卖儿卖女,妻离子散,是毛主席派来的亲人解放军把他们从水深火热中解救出来,从此他们过上了人人有饭吃,有衣穿,有学上,有病能够治疗,没有压迫,没有剥削,没有腐败的新生活,因此,无论这些年来某些知识分子和海外敌对势力攻击毛泽东如何“**”,如何“独裁”,如何“不懂经济”,他们始终认定毛泽东是中国人民的大救星。从20世纪90年代起,在没有任何舆论引导,没有任何人发动和组织的情况下,“红太阳热”席卷了万里神州大地,千千万万的老工人、老农民和当年的知青们,一遍遍地唱着毛泽东的颂歌,深情地怀念这位已故的领袖。每天都有成千上万的人从天南海北,从四面八方,来到北京的毛主席纪念堂,向他们敬爱的领袖和导师表达崇高的敬意。毛泽东永远是人民心中的一座丰碑。 毛泽东不仅在全中国,而且在全世界都享有崇高的威望。即使在他去世几十年后的今天,中国人到非洲经常会遇到这种现象:非洲的黑人们一听说对方来自中国,立即竖起大拇指说:“毛泽东!毛泽东!”世界上没有任何一位其他国家的领袖能够让他们如此肃然起敬。在亚洲和拉美的许多发展中国家也有同样的现象。甚至世界各国的领袖们(包括西方发达国家的首脑)也对毛泽东十分崇敬。1972年美国总统尼克松到中国访问,他是怀着朝圣般的心情去谒见毛泽东的。从毛泽东会见尼克松的照片中人们可以看到,尼克松的神态恭敬得象个小学生在老师面前。日本首相田中角荣在私下对女儿评论各国领袖时,对超级大国苏联的首脑勃列日涅夫和柯西金十分轻蔑,而推崇毛泽东为圣人。即使在日后毛泽东被某些人妖魔化时,他们对毛泽东的看法仍然不变。在尼克松晚年建立的私人图书馆里,建造有多尊尼克松与之打过交道的世界各国领导人的塑像,其中毛泽东和周恩来的塑像最突出和显赫,而且唯有他们是雍容华贵的坐像,其他人都是站像,不难看出尼克松最崇敬的就是毛泽东和周恩来。几年前,英国前首相希思回答记者谁是他最推崇的世界政治家,第一位就是中国的毛泽东。 由此可见,毛泽东是我们中华民族最伟大的英雄,历史将千秋万代铭记这一点。最近二十多年来,某些受西方影响的知识分子们(他们并不代表中国最广大的人民群众)恶毒攻击毛泽东,企图将中国重新拉回半殖民地的老路,使中国脱离向世界现代化强国冲刺的道路,沦为西方帝国主义的低级加工厂。他们涣散了中国的人心,削弱了中国人的斗志。他们就象苏联的索尔仁尼琴。索尔仁尼琴以反斯大林主义的小说《古拉格群岛》而著称,是反苏维埃制度最著名的斗士,但他在苏联解体后认识到自己反对斯大林和苏共是绝大错误。面对俄罗斯正沦为西方附庸的现实(即使在普京时代,俄罗斯的所谓经济复苏也是靠出卖石油和天然气等资源,与沙皇时代的俄国和当今世界的绝大多数落后国家没有什么两样),他痛苦悲哀地说:“今日的俄罗斯已经彻底丧失了斯大林曾经赋予这个国家的冲劲与斗志!”中国的某些知识分子们正在扮演索尔仁尼琴的角色,无论他们出于何种目的,实际上他们的所作所为,只能将中华民族重新拖向深渊。
View DetailsSQL中Case的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。 —简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 —比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类' WHEN col_1 IN ('a') THEN '第二类' ELSE'其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 国家(country)人口(population) 中国600 美国100 加拿大100 英国200 法国300 日本250 德国200 墨西哥50 印度250 根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。 洲人口 亚洲1100 北美洲250 其他700 想要解决这个问题,你会怎么做?生成一个带有洲Code的View,是一个解决方法,但是这样很难动态的改变统计的方式。 如果使用Case函数,SQL代码如下: SELECT SUM(population), CASE […]
View Details女孩英文名字大全
Abigail 艾比盖 希伯来 父亲很高兴;得意的父亲。 Ada, 埃达, 英国, 增光;快乐的;美丽。 Adela, 爱得拉 德国, 尊贵的;优雅的。 Adelaide, 爱得莱德, 德国, 高贵的;高贵阶级的。 Afra, 阿芙拉 希伯来 尘土 Agatha, 阿加莎 希腊, 善良而美好的 Agnes, 爱葛妮丝, 希腊,拉丁, 纯洁,高雅,贞节 Alberta 爱尔柏塔, 英国, 高贵显赫的。 Alexia, 亚莉克希亚, 希腊, 帮助 Alice, 艾丽斯 希腊, 尊贵的,真诚的 Alma, 爱玛, 拉丁,英国, 真情的、和善的、舞女。 Althea, 奥尔瑟雅, 希腊, 好预,医治者。 Alva, 阿尔娃 拉丁, 白皙的。 Amanda, 阿曼达 拉丁, 值得爱的。 Amelia, 阿蜜莉雅, 拉丁, 勤勉的,劳动的。 Amy, 艾咪, 法国, 最心爱的人,可爱的。 Anastasia, 阿娜丝塔西夏, 希腊, 再度振作起来之人,复活。 Andrea, 安德烈亚, 希腊, 有气概,美丽而优雅 Angela, 安杰拉 法国, 天使;报信者,安琪儿。 Ann, 安妮, 希伯来 优雅的,仁慈的上帝。 Anna, 安娜, 希伯来 优雅 Annabelle, 安纳贝尔, 希伯来,拉丁, 美丽的女子;可爱的;和蔼可亲的。 […]
View DetailsXml和DataSet互操作类
using System;using System.Data;using System.Xml; //***************************************// 作者: yangtang_newton//其实用DataSet操作XML,归根到底就是对DataSet里的表格,行,列等进行操作,//然后用DataSet里的东西重新写到XML中,从而实现编辑XML的目的。如果再配合上.xsd文件的话,那效果更佳。//xsd生成方法:xsd file.xml [/outputdir:directory] [/parameters:file.xml] //*************************************** namespace USTC{/// <summary>/// OperateXmlByDataSet 的摘要说明。/// </summary>public class XmlDataSet{private string strXmlPath;//这个是相对路径public XmlDataSet(string strXmlPath){ // // TODO: 在此处添加构造函数逻辑 // this.strXmlPath=strXmlPath;} #region GetDataSetByXml/// <summary>/// 读取xml直接返回DataSet/// </summary>/// <param name="strXmlPath">xml文件相对路径</param>/// <returns></returns>public DataSet GetDataSetByXml(){ try { DataSet ds = new DataSet(); ds.ReadXml(GetXmlFullPath(strXmlPath)); if(ds.Tables.Count > 0) { return ds; } return null; } catch(Exception) { return null; }}#endregion /* * 以下代码读取到一个没有排序和筛选的DataSet。 USTC.XmlDataSet XML=new XmlDataSet(@"XML/PortalCfg.xml");DataGrid1.DataSource = XML.GetDataSetByXml();DataGrid1.DataBind();//以下代码读到的数据是经过筛选和排序的:DataGrid1.DataSource =XML.GetDataViewByXml("name = 'Asp.net’", //条件:name列值为Asp.net"peopleNum desc"); //按peopleNum列降序排列DataGrid1.DataBind(); */ #region GetDataViewByXml/// <summary>/// 读取Xml返回一个经排序或筛选后的DataView/// </summary>/// <param name="strXmlPath"></param>/// <param name="strWhere">筛选条件,如:"name = […]
View DetailsC# DataSet,ListView和XML文件互操作的例子
DataSet和XML文件互操作的例子 //读取XML文件到DataSetDataSet ds = new DataSet();MyXmlPath = "C:\\Message.xml";FileStream fs = new FileStream(MyXmlPath, FileMode.Open);ds.ReadXml(fs, XmlReadMode.ReadSchema);fs.Close();//筛选行存入DataSetDataRow[] FoundRows;string Expression = "AREA IN ('" + Area + "',")";string SortOrder = "DAY DESC";FoundRows = ds.Tables[0].Select(Expression, SortOrder);DataTable Mydt = new DataTable();Mydt.Columns.Add("FKEY");Mydt.Columns.Add("IIIII");Mydt.Columns.Add("NAME");Mydt.Columns.Add("AREA");Mydt.Columns.Add("X");Mydt.Columns.Add("Y");Mydt.Columns.Add("BKIND");Mydt.Columns.Add("SKIND");Mydt.Columns.Add("DAY");Mydt.Columns.Add("ETIME");Mydt.Columns.Add("TYPE");Mydt.Columns.Add("MAIN");Mydt.Columns.Add("TTIME");foreach (DataRow dr in FoundRows){Mydt.Rows.Add(dr.ItemArray);}DataSet Myds = new DataSet();Myds.Tables.Add(Mydt);//保存到XML文件Myds.WriteXml(MyXmlPath, XmlWriteMode.WriteSchema); //ListView的一个例子XmlDocument doc = new XmlDocument();XmlDeclaration Declaration = doc.CreateXmlDeclaration("1.0","GB2312","");doc.AppendChild(Declaration);XmlElement xe = doc.CreateElement("Infos");doc.AppendChild(xe);for(int i = 0;i < listview.Items.Count;i++){XmlNode parent = doc.CreateElement("Info" + i.ToString());ListViewItem temp = listview.Items[i];for(int j = 0;j < temp.SubItems.Count;j++){string s = temp.SubItems[j].Text;XmlNode node = doc.CreateElement(s);node.InnerText = s;parent.AppendChild(node);}doc.AppendChild(parent);}doc.Save(FilePath);
View Details