﻿<?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-Nic Sense Zone Space-文章分类-Database Group</title><link>http://www.blogjava.net/nicholas-sjy/category/5980.html</link><description>老了没有回忆不要紧，要是只有一大堆后悔就惨了</description><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 02:46:19 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 02:46:19 GMT</pubDate><ttl>60</ttl><item><title>Dorado on the Road - 1</title><link>http://www.blogjava.net/nicholas-sjy/articles/Dorado.html</link><dc:creator>Nic Sense Zone</dc:creator><author>Nic Sense Zone</author><pubDate>Sun, 31 Dec 2006 19:29:00 GMT</pubDate><guid>http://www.blogjava.net/nicholas-sjy/articles/Dorado.html</guid><wfw:comment>http://www.blogjava.net/nicholas-sjy/comments/91260.html</wfw:comment><comments>http://www.blogjava.net/nicholas-sjy/articles/Dorado.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nicholas-sjy/comments/commentRss/91260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nicholas-sjy/services/trackbacks/91260.html</trackback:ping><description><![CDATA[  
<p style="MARGIN-BOTTOM: 0cm" align="center"><font face="Times New Roman, serif"><font style="FONT-SIZE: 22pt" size="6"><u><b>Dorado on the way</b></u></font></font></p><p style="MARGIN-BOTTOM: 0cm" align="center"><br /></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">2006</font>年<font face="Times New Roman, serif">12</font>月<font face="Times New Roman, serif">25</font>日</p><p style="MARGIN-BOTTOM: 0cm"><br /></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>今天是圣诞节，进入公司已经四个月了，可是对公司的产品<font face="Times New Roman, serif">Dorado</font>还几乎是一个门外汉，<font face="Times New Roman, serif">(</font>我要说明一下，不是我太笨，刚刚进入公司就接受了一个传统项目的开发，再加之学校的事情，在此我想我应该声明一点，我还是一个大四的学生，快结束大学四年的学习了，到最后，乱七八糟的事情实在是太多了，这个报告那个报告的。<font face="Times New Roman, serif">)</font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">Thomas(</font>我们公司的产品经理<font face="Times New Roman, serif">)</font>，还有范经理，实在是不好意思，还有公司的同事，虽然我比他们中的好多人进入公司都早，可惜我不是最厉害的，至少现在不是。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>到上个星期为止，学校的事情基本上已经完了，毕业设计的课题也选了，选的课题是《基于智能<font face="Times New Roman, serif">Agent</font>的分布式移动计算处理》，本来一开始自作聪明，以为题目为“移动计算”嘛，就是移动设备的计算处理，智能<font face="Times New Roman, serif">Agent</font>嘛～估计就是一种形式而已，我自从从大学二年级自学<font face="Times New Roman, serif">Java</font>开始，接触了<font face="Times New Roman, serif">Java</font>中的<font face="Times New Roman, serif">JavaSE</font>和<font face="Times New Roman, serif">JavaEE</font>两个体系，正好可以借此课题，让我对<font face="Times New Roman, serif">JavaME</font>有所了解，也实现了完成毕业设计的作用。结果后来导师选好了以后，看着导师给的材料，我才知道，我陷入泥潭了～<font face="Times New Roman, serif">(</font>导师，原谅我这么说，呵呵<font face="Times New Roman, serif">·)</font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>今天是我真正学习<font face="Times New Roman, serif">Dorado</font>的第一天，公司给了我一些资料，所以我信心十足，我要赶上公司的其他同事，呵呵～争取超过他们哦～已经习惯了要做到最好，我是不是太自大了？？</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>还是跟我学习<font face="Times New Roman, serif">Java</font>一样，首先在公司的官方网站<font face="Times New Roman, serif">(<a href="http://www.bstek.com/">http://www.bstek.com/</a>)</font>下载了<font face="Times New Roman, serif">Dorado</font>的最近版本，我下载的版本是<font face="Times New Roman, serif">Dorado-5.0 061129.1132</font>，一并还下载了<font face="Times New Roman, serif">Dorado 5 </font>快速入门，组件使用技巧，当然还有<font face="Times New Roman, serif">Dorado</font>的<font face="Times New Roman, serif">API</font>－－我的最爱。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>首先看了<font face="Times New Roman, serif">Benny(</font>我们公司的<font face="Times New Roman, serif">CTO)</font>录制的两段视频说明，依照<font face="Times New Roman, serif">Dorado</font>安装自带的<font face="Times New Roman, serif">doradosample</font>，把<font face="Times New Roman, serif">dorado</font>的大致功能作了一个讲解说明，个人感觉<font face="Times New Roman, serif">dorado</font>还是挺有市场前景的，只是需要更大的宣传。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>好了，闲话不多说了，开始我的<font face="Times New Roman, serif">Dorado</font>之旅吧～</p><p style="MARGIN-BOTTOM: 0cm"><br /></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>首先，需要了解的是：<span style="BACKGROUND: #ffff00"><font color="#800000">视图模型</font></span><font face="Times New Roman, serif">Dorado</font>开发当中非常重要的对象，它封装了<font face="Times New Roman, serif">Dorado</font>的界面逻辑和操作逻辑，即主要包含什么数据<font face="Times New Roman, serif">dataset </font>，以及这些数据通过什么形式来展现。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>下面是我今天学习中，觉得需要注意的一些地方和术语。</p><p style="MARGIN-BOTTOM: 0cm"><br /></p><ul><li><p style="MARGIN-BOTTOM: 0cm"><font color="#800000"><font face="Times New Roman, serif"><font size="4"><b><span style="BACKGROUND: #ffff00">Dataset</span></b></font></font></font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">1. getDataset(“datasetName”) ; </font>获取对<font face="Times New Roman, serif">dataset</font>的引用</p></li></ul><ol><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">2. RecordIterator ri = dataset.recordIterator() ; </font>获取对<font face="Times New Roman, serif">dataset</font>的迭代器引用。</p></ol><ol><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">3. </font>对<font face="Times New Roman, serif">dataset</font>的遍历<br /></p><ol><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"><br /></font></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img id="Codehighlighter1_19_67_Open_Image" onclick="this.style.display='none'; Codehighlighter1_19_67_Open_Text.style.display='none'; Codehighlighter1_19_67_Closed_Image.style.display='inline'; Codehighlighter1_19_67_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_19_67_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_19_67_Closed_Text.style.display='none'; Codehighlighter1_19_67_Open_Image.style.display='inline'; Codehighlighter1_19_67_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(ri.hasNext())</span><span id="Codehighlighter1_19_67_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_19_67_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />Record record </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ri.nextRecord() ;<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 对每条记录的操作</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">4. </font>可是通过<font face="Times New Roman, serif">getControl(“controlName”) ; </font>获取组件的引用</p></ol></ol><ol><ol><p style="MARGIN-BOTTOM: 0cm"><font color="#800000">注意，这里得到的是<font face="Times New Roman, serif">Control</font>对象，需要进行类型的强制转换。</font></p></ol></ol><ol><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">5. ”Module</font>数据坞”的说明。</p><ol><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">1). </font>数据坞里面的<font face="Times New Roman, serif">dataset</font>对象可以被不同的视频模型索引用，以达到数据共享的作用。</p></ol></ol><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">                    2). Module</font>不应该包含任何的业务逻辑，这是一种良好的设计模式。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">                    3). Module</font>的创建和销毁由<font face="Times New Roman, serif">Dorado</font>提供的容器来管理，可以当做一个<font face="Times New Roman, serif">Singleton</font>来使用。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>                         所以在绝大部分情况下，在<font face="Times New Roman, serif">Module</font>里面添加非静态的属性都不是正确<font face="Times New Roman, serif"> (</font>或者是不太明智<font face="Times New Roman, serif">)</font>的做法。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">                     4). Module</font>中的<font face="Times New Roman, serif">dataset</font>的创建和销毁使用<font face="Times New Roman, serif">dorado</font>提供的容器来管理的，但开发人<font face="Times New Roman, serif"></font>员可以强制通过<font face="Times New Roman, serif">scope</font>和<font face="Times New Roman, serif">timeout</font>来定制<font face="Times New Roman, serif">dataset</font>的<br />                          生命周期。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">                     5). scope</font>有三种取值，分别是<font face="Times New Roman, serif">request (</font>默认<font face="Times New Roman, serif">)</font>，<font face="Times New Roman, serif">session </font>， <font face="Times New Roman, serif">application</font>。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>                           需要特别注意的是，在同一个<font face="Times New Roman, serif">request</font>中<font color="#800000">连续以不同</font>的<font face="Times New Roman, serif">pageIndex </font>，<font face="Times New Roman, serif">pageSize </font>，<font face="Times New Roman, serif"> parameters</font>的不同组合来获取<font face="Times New Roman, serif">Module</font>中的<font face="Times New Roman, serif">dataset</font>，但将获得<font color="#800000">多个不同的</font><font face="Times New Roman, serif">dataset </font>实例。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">                     6). </font>如果为了提高效率而将<font face="Times New Roman, serif">scope</font>设置为<font face="Times New Roman, serif">application </font>，则应该注意让此<font face="Times New Roman, serif">dataset</font>中的<font face="Times New Roman, serif"></font>数据量不要过大。常用在大型系统中的代码表。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">6. </font>通过<font face="Times New Roman, serif">dataSet.getCurrent() ; </font>方法，可以从<font face="Times New Roman, serif">dataSet</font>获取当前记录。由于<font face="Times New Roman, serif">dataSet</font>具有</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">“</font>当前记录”这个，所以大多数操作都是对“当前数据”来说的。</p><ul><ul><ul><ul><p style="MARGIN-BOTTOM: 0cm"></p></ul></ul></ul><li><p style="MARGIN-BOTTOM: 0cm"><font color="#800000"><font face="Times New Roman, serif"><font size="4"><span style="BACKGROUND: #ffff00">Mapping</span></font></font></font></p><blockquote dir="ltr" style="MARGIN-RIGHT: 0px"><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">1. </font>所有的<font face="Times New Roman, serif">Mapping</font>单元都是通过名为<font face="Times New Roman, serif">global</font>的管理单元来进行管理的。</p></blockquote></li></ul><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">            2. </font>在请求映射的过程中，<font face="Times New Roman, serif">dorado</font>有着自己独特的，不同于<font face="Times New Roman, serif">Struts</font>的映射机制，</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>                  例如：对于请求：<font face="Times New Roman, serif">action=”access.login.d”</font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">access </font>与对应的<font face="Times New Roman, serif">controller</font>的名称一致，</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>而<font face="Times New Roman, serif">login</font>与对应的<font face="Times New Roman, serif">action</font>的名称一致。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">3. controller</font><span lang="zh-CN">的</span><font face="Times New Roman, serif">clazz</font><span lang="zh-CN">属性所表示的是用于处理这个请求的</span><font face="Times New Roman, serif">class </font><span lang="zh-CN">，类似于</span><font face="Times New Roman, serif">Struts</font><span lang="zh-CN">中的</span><font face="Times New Roman, serif"> Action </font><span lang="zh-CN">，而提交的数据，就从</span><font face="Times New Roman, serif">Struts </font><span lang="zh-CN">中的</span><font face="Times New Roman, serif">ActionFrom</font><span lang="zh-CN">转换成了</span><font face="Times New Roman, serif">Dorado</font><span lang="zh-CN">的</span><font face="Times New Roman, serif">dataset.</font></p><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">4. </font>对于页面的访问安全控制<font face="Times New Roman, serif">(</font>即只能通过<font face="Times New Roman, serif">dorado</font>式的请求，而不容许以文件结构路径<font face="Times New Roman, serif"></font>来访问，即<font face="Times New Roman, serif">../demo/XX.jsp)</font>，可以将<font face="Times New Roman, serif">view</font>中的<font face="Times New Roman, serif">safe</font>属性设置为<font face="Times New Roman, serif">true</font>来控制。</p><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>或者通过<font face="Times New Roman, serif">dorado</font>默认的<font face="Times New Roman, serif">setting</font>中的<font face="Times New Roman, serif">security.accessChecher</font>来控制。不过我可以自主<font face="Times New Roman, serif"></font>创建一个<font face="Times New Roman, serif">AccessChecker</font>类型的<font face="Times New Roman, serif">java</font>类来进行控制。但需要将<font face="Times New Roman, serif">setting.xml</font>里面的<font face="Times New Roman, serif"> “security.accessChecker”</font>属性修改为自己创建的类路径。</p><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">5. </font>可以通过<font face="Times New Roman, serif">DoradoContext</font>来访问<font face="Times New Roman, serif">dorado</font>的上下文信息，并通过标记量来告诉<font face="Times New Roman, serif">dorado </font>的上下文从哪里获取需要的变量。</p><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif"></font>例如，</p><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">Object obj = doradoContext.getAttribute(DoradoContext.SESSION,”username”) ;</font></p><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><br /></p><ul><li value="1"><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font color="#800000"><font face="Times New Roman, serif"><font size="4"><span style="BACKGROUND: #ffff00">i18n</span></font></font></font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">1. </font>你需要在<font face="Times New Roman, serif">i18n</font>目录下新建一些<font face="Times New Roman, serif">I18N</font>的<font face="Times New Roman, serif">properties</font>类型文件。此类文件与<font face="Times New Roman, serif">java</font>中的</p><p style="MARGIN-BOTTOM: 0cm">一致，都是以键－值对的形式存在。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">2. </font>在<font face="Times New Roman, serif">dataset</font>中的<font face="Times New Roman, serif">Fields</font>里面设置为<font face="Times New Roman, serif">${Resource.fileName.key}</font>的形式进行设置。这个就 </p><p style="MARGIN-BOTTOM: 0cm">有点类似于<font face="Times New Roman, serif">JSP2.0</font>中的<font face="Times New Roman, serif">EL</font>，其中，<font face="Times New Roman, serif">fileName</font>是资源文件的文件头，不包括<font face="Times New Roman, serif">_cn_ZH</font></p><p style="MARGIN-BOTTOM: 0cm">等类似的字样。而<font face="Times New Roman, serif">key</font>是在文件中的键。这些都是在系统的<font face="Times New Roman, serif">setting.xml</font>中的 </p><p style="MARGIN-BOTTOM: 0cm">“<font face="Times New Roman, serif">common.locale.language”</font>和“<font face="Times New Roman, serif">common.locale.country ”</font>来进行的配置。同样，你可</p><p style="MARGIN-BOTTOM: 0cm">以通过修改这两个属性来启用不同的<font face="Times New Roman, serif">I18N</font>文件。</p></li></ul><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">3. </font>对于动态更改用户的国际化资源的情况，可以使用<font face="Times New Roman, serif"></font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">LocalHelper.getLocale(“language”,”country”),</font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">ResourceManager.getInstance().setDefaultLocale(context, </font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">DoradoContext.SESSION,</font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">locale) ; </font>来设置。 </p><ul><p style="MARGIN-BOTTOM: 0cm"></p><li><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font color="#800000"><font face="Times New Roman, serif"><font size="4"><span style="BACKGROUND: #ffff00">EL</span></font></font></font></p><p style="MARGIN-BOTTOM: 0cm">在<font face="Times New Roman, serif">JSP2.0</font>方面的书籍中有大量的经典介绍，这里就不再记录。</p><p style="MARGIN-BOTTOM: 0cm">开发时，只需记住<font face="Times New Roman, serif">Dorado</font>内置的隐式变量，即可。</p><p style="MARGIN-BOTTOM: 0cm"></p></li><li><p lang="zh-CN" style="MARGIN-BOTTOM: 0cm"><font color="#800000"><font face="Times New Roman, serif"><font size="4"><span style="BACKGROUND: #ffff00">Skin</span></font></font></font></p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">1. </font>皮肤文件夹存放的位置是在<font face="Times New Roman, serif">skins</font>文件夹下面的。</p><p style="MARGIN-BOTTOM: 0cm">在使用新皮肤时，只需要修改<font face="Times New Roman, serif">setting.xml</font>中的<font face="Times New Roman, serif">view.smartweb2.skin</font>对应的值即可。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">2. </font>同时可以通过修改<font face="Times New Roman, serif">skin.css</font>文件来修改<font face="Times New Roman, serif">dorado</font>中的标签库的所有展示风格。</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">3. </font>同时也支持传统的<font face="Times New Roman, serif">JSP</font>开发，即在<font face="Times New Roman, serif">&lt;head&gt;</font>标签中设置相信的各种属性，以完成让</p><p style="MARGIN-BOTTOM: 0cm"><font face="Times New Roman, serif">dorado</font>以用户自定义的形式进行展现。<br /></p></li></ul><img src ="http://www.blogjava.net/nicholas-sjy/aggbug/91260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nicholas-sjy/" target="_blank">Nic Sense Zone</a> 2007-01-01 03:29 <a href="http://www.blogjava.net/nicholas-sjy/articles/Dorado.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典的SQL语句</title><link>http://www.blogjava.net/nicholas-sjy/articles/63344.html</link><dc:creator>Nic Sense Zone</dc:creator><author>Nic Sense Zone</author><pubDate>Sun, 13 Aug 2006 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/nicholas-sjy/articles/63344.html</guid><wfw:comment>http://www.blogjava.net/nicholas-sjy/comments/63344.html</wfw:comment><comments>http://www.blogjava.net/nicholas-sjy/articles/63344.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nicholas-sjy/comments/commentRss/63344.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nicholas-sjy/services/trackbacks/63344.html</trackback:ping><description><![CDATA[
		<p>
		</p>
		<p>
		</p>
		<p>以下是我在网上收集的一些经典的SQL语句。</p>
		<h4 class="TextColor1" id="subjcns!40CC4C4BA62448AA!230" style="MARGIN-BOTTOM: 0px">精典的SQL语句</h4>
		<div id="msgcns!40CC4C4BA62448AA!230">
				<div>1. 行列转换--普通<br /><br /><font face="Courier New" size="2">假设有张学生成绩表(CJ)如下<br />Name Subject Result<br />张三 语文 80<br />张三 数学 90<br />张三 物理 85<br />李四 语文 85<br />李四 数学 92<br />李四 物理 82<br /><br />想变成 <br />姓名 语文 数学 物理<br />张三 80 90 85<br />李四 85 92 82<br /></font><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">declare</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">4000</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">select Name</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">,sum(case Subject when </span><span style="COLOR: #ff0000">'''</span><span style="COLOR: #808080">+</span><span style="COLOR: #000000">Subject</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'''</span><span style="COLOR: #ff0000"> then Result end) [</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">+</span><span style="COLOR: #000000">Subject</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">distinct</span><span style="COLOR: #000000"> Subject </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> CJ) </span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"> a<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@sql</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000"> from test group by name</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">exec</span><span style="COLOR: #000000">(</span><span style="COLOR: #008000">@sql</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />2. 行列转换--合并<br /><br /><font face="Courier New" size="2">有表A,<br />id pid<br />1 1<br />1 2<br />1 3<br />2 1<br />2 2<br />3 1<br />如何化成表B:<br />id pid<br /> 1 1,2,3<br /> 2 1,2<br /> 3 1<br /></font><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">创建一个合并的函数<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">create</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> fmerg(</span><span style="COLOR: #008000">@id</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">returns</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">8000</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">begin</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">declare</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@str</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">8000</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@str</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">''</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@str</span><span style="COLOR: #808080">=</span><span style="COLOR: #008000">@str</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">,</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #808080">+</span><span style="COLOR: #ff00ff">cast</span><span style="COLOR: #000000">(pid </span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">varchar</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> 表A </span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> id</span><span style="COLOR: #808080">=</span><span style="COLOR: #008000">@id</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@str</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff00ff">right</span><span style="COLOR: #000000">(</span><span style="COLOR: #008000">@str</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">len</span><span style="COLOR: #000000">(</span><span style="COLOR: #008000">@str</span><span style="COLOR: #000000">)</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">(</span><span style="COLOR: #008000">@str</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">End</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">go</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008080">--</span><span style="COLOR: #008080">调用自定义函数得到结果</span><span style="COLOR: #008080"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">distinct</span><span style="COLOR: #000000"> id,dbo.fmerg(id) </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> 表A<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />3. 如何取得一个数据表的所有列名<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">方法如下：先从SYSTEMOBJECT系统表中取得数据表的SYSTEMID,然后再SYSCOLUMN表中取得该数据表的所有列名。<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />SQL语句如下：<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">declare</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@objid</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,</span><span style="COLOR: #008000">@objname</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #000000">char</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">40</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@objname</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">tablename</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@objid</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> id </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> sysobjects </span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> id </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">object_id</span><span style="COLOR: #000000">(</span><span style="COLOR: #008000">@objname</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">Column_name</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> name </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> syscolumns </span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> id </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #008000">@objid</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">order</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">by</span><span style="COLOR: #000000"> colid<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />4. 通过SQL语句来更改用户的密码<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">修改别人的,需要sysadmin role <br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">EXEC</span><span style="COLOR: #000000"> sp_password </span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">, </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">newpassword</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">, </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">User</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />如果帐号为SA执行EXEC sp_password </span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">, </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">newpassword</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">, sa <br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />5. 怎么判断出一个表的哪些字段不允许为空？<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> COLUMN_NAME </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> INFORMATION_SCHEMA.COLUMNS </span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> IS_NULLABLE</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">NO</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">and</span><span style="COLOR: #000000"> TABLE_NAME</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">tablename <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />6. 如何在数据库里找到含有相同字段的表？<br /><br />a. <font face="Courier New" size="2">查已知列名的情况</font><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> b.name </span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"> TableName,a.name </span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"> columnname <br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">From</span><span style="COLOR: #000000"> syscolumns a </span><span style="COLOR: #0000ff">INNER</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">JOIN</span><span style="COLOR: #000000"> sysobjects b <br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000"> a.id</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">b.id <br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #808080">AND</span><span style="COLOR: #000000"> b.type</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">U</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #808080">AND</span><span style="COLOR: #000000"> a.name</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">你的字段名字</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />b. <font face="Courier New" size="2">未知列名查所有在不同表出现过的列名</font><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">Select</span><span style="COLOR: #000000"> o.name </span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000"> tablename,s1.name </span><span style="COLOR: #0000ff">As</span><span style="COLOR: #000000"> columnname <br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">From</span><span style="COLOR: #000000"> syscolumns s1, sysobjects o <br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">Where</span><span style="COLOR: #000000"> s1.id </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> o.id <br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #808080">And</span><span style="COLOR: #000000"> o.type </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">U</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #808080">And</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">Exists</span><span style="COLOR: #000000"> ( <br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #0000ff">Select</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">From</span><span style="COLOR: #000000"> syscolumns s2 <br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #0000ff">Where</span><span style="COLOR: #000000"> s1.name </span><span style="COLOR: #808080">=</span><span style="COLOR: #000000"> s2.name <br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #808080">And</span><span style="COLOR: #000000"> s1.id </span><span style="COLOR: #808080">&lt;&gt;</span><span style="COLOR: #000000"> s2.id <br /></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> )</span></div><br /><br />7. 查询第xxx行数据<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">假设id是主键： <br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">*</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">top</span><span style="COLOR: #000000"> xxx </span><span style="COLOR: #808080">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> yourtable) aa <br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">not</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">exists</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">top</span><span style="COLOR: #000000"> xxx</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #808080">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> yourtable) bb </span><span style="COLOR: #0000ff">where</span><span style="COLOR: #000000"> aa.id</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">bb.id)<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> <br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />如果使用游标也是可以的 <br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">fetch</span><span style="COLOR: #000000"> absolute </span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">number</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">from</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">cursor_name</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />行数为绝对行数<br /></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br /><br />8. SQL Server日期计算<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">a. 一个月的第一天<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(mm, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(mm,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">) <br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />b. 本周的星期一<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(wk, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(wk,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">) <br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />c. 一年的第一天<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(yy, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(yy,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">) <br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />d. 季度的第一天<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(qq, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(qq,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">) <br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />e. 上个月的最后一天 <br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(ms,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(mm, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(mm,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">)) <br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />f. 去年的最后一天<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(ms,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(yy, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(yy,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">)) <br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />g. 本月的最后一天<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(ms,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(mm, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(m,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">())</span><span style="COLOR: #808080">+</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">, </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">)) <br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />h. 本月的第一个星期一<br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(wk, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(wk,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">, <br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(dd,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">6</span><span style="COLOR: #808080">-</span><span style="COLOR: #ff00ff">datepart</span><span style="COLOR: #000000">(</span><span style="COLOR: #ff00ff">day</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()),</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">()) <br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> ), </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">) <br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />i. 本年的最后一天<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff00ff">dateadd</span><span style="COLOR: #000000">(ms,</span><span style="COLOR: #808080">-</span><span style="FONT-WEIGHT: bold; COLOR: #800000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">DATEADD</span><span style="COLOR: #000000">(yy, </span><span style="COLOR: #ff00ff">DATEDIFF</span><span style="COLOR: #000000">(yy,</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #ff00ff">getdate</span><span style="COLOR: #000000">())</span><span style="COLOR: #808080">+</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">, </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000">))</span></div><br /><br />感谢那些网上提供相关SQL的作者。<img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /><img height="19" src="http://www.blogjava.net/Emoticons/emnote.gif" width="19" border="0" /></div>
		</div>
<img src ="http://www.blogjava.net/nicholas-sjy/aggbug/63344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nicholas-sjy/" target="_blank">Nic Sense Zone</a> 2006-08-13 17:47 <a href="http://www.blogjava.net/nicholas-sjy/articles/63344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>