﻿<?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-花香蝶自来-随笔分类-数据库</title><link>http://www.blogjava.net/ltc603/category/7011.html</link><description>&lt;font size="3"&gt;学无止境&lt;/font&gt;
&lt;br&gt;

&lt;script type="text/javascript" src="http://wujunlove.googlepages.com/bigstaticeyes.js"&gt;&lt;/script&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:24:02 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:24:02 GMT</pubDate><ttl>60</ttl><item><title>Oracle 10G -- Pl/sql 基础 </title><link>http://www.blogjava.net/ltc603/archive/2006/08/29/66341.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Tue, 29 Aug 2006 00:52:00 GMT</pubDate><guid>http://www.blogjava.net/ltc603/archive/2006/08/29/66341.html</guid><wfw:comment>http://www.blogjava.net/ltc603/comments/66341.html</wfw:comment><comments>http://www.blogjava.net/ltc603/archive/2006/08/29/66341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ltc603/comments/commentRss/66341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ltc603/services/trackbacks/66341.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.   												简介																																				1.1										    																				结构																		DECLARE -- 						定义																		BEG...&nbsp;&nbsp;<a href='http://www.blogjava.net/ltc603/archive/2006/08/29/66341.html'>阅读全文</a><img src ="http://www.blogjava.net/ltc603/aggbug/66341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ltc603/" target="_blank">阿成</a> 2006-08-29 08:52 <a href="http://www.blogjava.net/ltc603/archive/2006/08/29/66341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库模型大全</title><link>http://www.blogjava.net/ltc603/archive/2006/08/22/64958.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Tue, 22 Aug 2006 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/ltc603/archive/2006/08/22/64958.html</guid><wfw:comment>http://www.blogjava.net/ltc603/comments/64958.html</wfw:comment><comments>http://www.blogjava.net/ltc603/archive/2006/08/22/64958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ltc603/comments/commentRss/64958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ltc603/services/trackbacks/64958.html</trackback:ping><description><![CDATA[
		<a href="http://www.databaseanswers.org/data_models/index.htm">http://www.databaseanswers.org/data_models/index.htm</a>
<img src ="http://www.blogjava.net/ltc603/aggbug/64958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ltc603/" target="_blank">阿成</a> 2006-08-22 09:30 <a href="http://www.blogjava.net/ltc603/archive/2006/08/22/64958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hsql尝试</title><link>http://www.blogjava.net/ltc603/archive/2006/08/16/63897.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Wed, 16 Aug 2006 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/ltc603/archive/2006/08/16/63897.html</guid><wfw:comment>http://www.blogjava.net/ltc603/comments/63897.html</wfw:comment><comments>http://www.blogjava.net/ltc603/archive/2006/08/16/63897.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ltc603/comments/commentRss/63897.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ltc603/services/trackbacks/63897.html</trackback:ping><description><![CDATA[
	（转自：转自：<a href="http://cutelife.bokee.com/blog/3474380.html">http://cutelife.bokee.com/blog/3474380.html</a>）<br />前言：该文章只是简单介绍一下hsql的入门内容，如果想仔细了解的话，参考官方帮助文档最为有用。
<p>一、简介：<br />hsql数据库是一款纯Java编写的免费数据库，许可是BSD-style的协议，如果你是使用Java编程的话，不凡考虑一
下使用它，相对其他数据库来说，其体积小，才563kb。仅一个hsqldb.jar文件就包括了数据库引擎，数据库驱动，还有其他用户界面操作等内容。
在Java开源世界里，hsql是极为受欢迎的（就Java本身来说），JBoss应用程序服务器默认也提供了这个数据库引擎。由于其体积小的原因，又是
纯Java设计，又支持SQL99，SQL2003大部分的标准，所以也是作为商业应用程序展示的一种选择。请到以下地址下载hsql： <a href="http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download">http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download</a></p><p>二、使用hsql数据库：<br />1、hsql数据库引擎有几种服务器模式：常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-Only数据库。<br />2、最为常用的Server模式：<br />1)首先却换到lib文件夹下，运行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb<br />执行命令后，将会在db文件夹下创建一个数据库mydb，别名（用于访问数据库）是xdb，如果存在mydb数据库，将会打开它。<br />2)运行数据库界面操作工具：java -cp hsqldb.jar org.hsqldb.util.DatabaseManager<br />在Type
选项里选上相应的服务器模式，这里选择HSQL Database Engine
Server模式；Driver不用修改；URL修改为jdbc:hsqldb:hsql://localhost/xdb
（主要这里xdb就是上面我们设置的别名）;user里设置用户名，第一次登录时，设置的是管理员的用户名，password设置密码。然后点击Ok。<br />3)第一次运行数据库引擎，创建数据库完毕。好了，你可以打开db文件夹，会发现里面多了几个文件。<br />mydb.properties文件：是关于数据库的属性文件。<br />mydb.script：hsql主要保存的表（这里按hsql的说法是Memory表，就是最为常用的），里面的格式都是文本格式，可以用文本查看，里面的语句都是sql语句，熟悉sql语句的话，你也可以手动修改它。每次运行数据库引擎的话都是从这里加载进内存的。<br />mydb.lck表示数据库处于打开状态。<br />其他的请参看hsqldb包里的手册。</p><p>3、WebServer模式和Server运行模式基本一样，只是支持了Http等协议，主要用于防火墙，默认端口是9001。启动Server，java -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。</p><p>4、Servlet模式可以允许你通过Servlet容器来访问数据库，请查看hsqlServlet.java的源代码，和WebServer类似。</p><p>5、
另一个值得思考的模式是Standalone模式：不能通过网络来访问数据库，主要是在一个JVM中使用，那样的话，访问的速度会更加快。虽然文档里面提
到主要是用于开发时使用，但是我们可以假设一下，该方法不需要一个引擎类的东西，而类似于打开文件的方式，返回一个Connection对象：<br />Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");<br />将
会在当前目录找到mydb数据库相关文件，打开并返回一个Connection对象。该方式有点好处就是可以不使用引擎，在需要的时候操作数据。所以那些
对数据库不是特别有要求的，但又需要一个操作数据库的方式的话，可以使用这种方法。对于那些不想额外在数据库引擎花费金钱的话，可以使用这种方法。但是不
推荐使用该方法。记得Hibernate里SessionFactory可以使用openSession(Connecttion
c)来获得一个Session对象的，因此，在测试或者实际应用的话都可以这样使用。</p><p>6、Memory-Only 数据库：顾名思义，主要是内存中使用，不用于保存数据。可以用于在内存中交换数据。</p><p>三、具体的链接与操作的话，和一般的JDBC操作一样。而相应的Server模式的话，连接地址主要你运行数据库界面操作工具时，在URL一栏时默认已经设好了，自己实习一下，对比其中参数。</p><p>这篇文章介绍大致内容很详细，不过也大都是从Hsql的帮助上翻译的，我有必要加入点新鲜的血液。<br />这篇文章美中不足的是缺少实战性，往往初学者第一步都走不出来，比如我。<br />我在实践中遇到的问题是打开数据库管理器怎么也连接不上数据库，总是说<br />java.sql.sqlException Socket create error<br />搞了一个晚上，到第二天早上清醒一下，想起来这个数据库应该在创建库之后，保持那个cmd窗口，在此过程中连接。<br />果然好用，也迈出了开拓Hsql的第一步。</p><p>另外不用在互联网上搜索别的介绍，Hsql自带的guide就已经很详细了。</p><img src ="http://www.blogjava.net/ltc603/aggbug/63897.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ltc603/" target="_blank">阿成</a> 2006-08-16 14:24 <a href="http://www.blogjava.net/ltc603/archive/2006/08/16/63897.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC连接数据库经验技巧集萃 </title><link>http://www.blogjava.net/ltc603/archive/2006/01/26/29233.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Thu, 26 Jan 2006 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/ltc603/archive/2006/01/26/29233.html</guid><wfw:comment>http://www.blogjava.net/ltc603/comments/29233.html</wfw:comment><comments>http://www.blogjava.net/ltc603/archive/2006/01/26/29233.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ltc603/comments/commentRss/29233.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ltc603/services/trackbacks/29233.html</trackback:ping><description><![CDATA[Java数据库连接（JDBC）由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API，使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同，所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。<BR><BR>　　<B>一、连接各种数据库方式速查表</B><BR><BR>　　下面罗列了各种数据库使用JDBC连接的方式，可以作为一个手册使用。 <BR><BR>　　1、Oracle8/8i/9i数据库（thin模式） <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); <BR>String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID <BR>String user="test"; <BR>String password="test"; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>　　2、DB2数据库 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); <BR>String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 <BR>String user="admin"; <BR>String password=""; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>　　3、Sql Server7.0/2000数据库 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); <BR>String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb"; <BR>//mydb为数据库 <BR>String user="sa"; <BR>String password=""; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>　　4、Sybase数据库 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("com.sybase.jdbc.SybDriver").newInstance(); <BR>String url =" jdbc:sybase:Tds:localhost:5007/myDB";//myDB为你的数据库名 <BR>Properties sysProps = System.getProperties(); <BR>SysProps.put("user","userid"); <BR>SysProps.put("password","user_password"); <BR>Connection conn= DriverManager.getConnection(url, SysProps); </TD></TR></TBODY></TABLE><BR>　　5、Informix数据库 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("com.informix.jdbc.IfxDriver").newInstance(); <BR>String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; <BR>user=testuser;password=testpassword"; //myDB为数据库名 <BR>Connection conn= DriverManager.getConnection(url); </TD></TR></TBODY></TABLE><BR>　　6、MySQL数据库 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("org.gjt.mm.mysql.Driver").newInstance(); <BR>String url ="jdbc:mysql://localhost/myDB?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" <BR>//myDB为数据库名 <BR>Connection conn= DriverManager.getConnection(url); </TD></TR></TBODY></TABLE><BR>　　7、PostgreSQL数据库 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("org.postgresql.Driver").newInstance(); <BR>String url ="jdbc:postgresql://localhost/myDB" //myDB为数据库名 <BR>String user="myuser"; <BR>String password="mypassword"; <BR>Connection conn= DriverManager.getConnection(url,user,password); </TD></TR></TBODY></TABLE><BR>　　8、access数据库直连用ODBC的<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;<BR>String url="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");<BR>Connection conn = DriverManager.getConnection(url,"","");<BR>Statement stmtNew=conn.createStatement() ;</TD></TR></TBODY></TABLE><BR>　　<B>二、JDBC连接MySql方式</B><BR><BR>　　下面是使用JDBC连接MySql的一个小的教程 <BR><BR>　　1、查找驱动程序<BR><BR>　　MySQL目前提供的java驱动程序为Connection/J，可以从MySQL官方网站下载，并找到mysql-connector-java-3.0.15-ga-bin.jar文件，此驱动程序为纯java驱动程序，不需做其他配置。<BR><BR>　　2、动态指定classpath<BR><BR>　　如果需要执行时动态指定classpath，就在执行时采用－cp方式。否则将上面的.jar文件加入到classpath环境变量中。<BR><BR>　　3、加载驱动程序<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>try{<BR>　Class.forName(com.mysql.jdbc.Driver);<BR>　System.out.println(Success loading Mysql Driver!);<BR>}catch(Exception e)<BR>{<BR>　System.out.println(Error loading Mysql Driver!);<BR>　e.printStackTrace();<BR>}</TD></TR></TBODY></TABLE><BR>　　4、设置连接的url<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>jdbc：mysql：//localhost/databasename[?pa=va][＆pa=va]</TD></TR></TBODY></TABLE><BR><SPAN class=f14>　　<B>三、以下列出了在使用JDBC来连接Oracle数据库时可以使用的一些技巧</B><BR><BR>　　1、在客户端软件开发中使用Thin驱动程序<BR><BR>　　在开发Java软件方面，Oracle的数据库提供了四种类型的驱动程序，二种用于应用软件、applets、servlets等客户端软件，另外二种用于数据库中的Java存储过程等服务器端软件。在客户机端软件的开发中，我们可以选择OCI驱动程序或Thin驱动程序。OCI驱动程序利用Java本地化接口（JNI），通过Oracle客户端软件与数据库进行通讯。Thin驱动程序是纯Java驱动程序，它直接与数据库进行通讯。为了获得最高的性能，Oracle建议在客户端软件的开发中使用OCI驱动程序，这似乎是正确的。但我建议使用Thin驱动程序，因为通过多次测试发现，在通常情况下，Thin驱动程序的性能都超过了OCI驱动程序。<BR><BR>　　2、关闭自动提交功能，提高系统性能<BR><BR>　　在第一次建立与数据库的连接时，在缺省情况下，连接是在自动提交模式下的。为了获得更好的性能，可以通过调用带布尔值false参数的Connection类的setAutoCommit()方法关闭自动提交功能，如下所示：<BR><BR>　　conn.setAutoCommit(false);<BR><BR>　　值得注意的是，一旦关闭了自动提交功能，我们就需要通过调用Connection类的commit()和rollback()方法来人工的方式对事务进行管理。<BR><BR>　　3、在动态SQL或有时间限制的命令中使用Statement对象<BR><BR>　　在执行SQL命令时，我们有二种选择：可以使用PreparedStatement对象，也可以使用Statement对象。无论多少次地使用同一个SQL命令，PreparedStatement都只对它解析和编译一次。当使用Statement对象时，每次执行一个SQL命令时，都会对它进行解析和编译。这可能会使你认为，使用PreparedStatement对象比使用Statement对象的速度更快。然而，我进行的测试表明，在客户端软件中，情况并非如此。因此，在有时间限制的SQL操作中，除非成批地处理SQL命令，我们应当考虑使用Statement对象。<BR><BR>　　此外，使用Statement对象也使得编写动态SQL命令更加简单，因为我们可以将字符串连接在一起，建立一个有效的SQL命令。因此，我认为，Statement对象可以使动态SQL命令的创建和执行变得更加简单。<BR><BR>　　4、利用helper函数对动态SQL命令进行格式化<BR><BR>　　在创建使用Statement对象执行的动态SQL命令时，我们需要处理一些格式化方面的问题。例如，如果我们想创建一个将名字O'Reilly插入表中的SQL命令，则必须使用二个相连的“''”号替换O'Reilly中的“'”号。完成这些工作的最好的方法是创建一个完成替换操作的helper方法，然后在连接字符串心服用公式表达一个SQL命令时，使用创建的helper方法。与此类似的是，我们可以让helper方法接受一个Date型的值，然后让它输出基于Oracle的to_date()函数的字符串表达式。<BR><BR>　　5、利用PreparedStatement对象提高数据库的总体效率<BR><BR>　　在使用PreparedStatement对象执行SQL命令时，命令被数据库进行解析和编译，然后被放到命令缓冲区。然后，每当执行同一个PreparedStatement对象时，它就会被再解析一次，但不会被再次编译。在缓冲区中可以发现预编译的命令，并且可以重新使用。在有大量用户的企业级应用软件中，经常会重复执行相同的SQL命令，使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务，我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象。<BR><BR>　　6、在成批处理重复的插入或更新操作中使用PreparedStatement对象<BR><BR>　　如果成批地处理插入和更新操作，就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理，只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理，或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制，可以以如下所示的方式调用setExecuteBatch()：<BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>PreparedStatement pstmt3D null;<BR>try {<BR>　((OraclePreparedStatement)pstmt).setExecuteBatch(30);<BR>　...<BR>　pstmt.executeUpdate();<BR>} </TD></TR></TBODY></TABLE><BR>　　调用setExecuteBatch()时指定的值是一个上限，当达到该值时，就会自动地引发SQL命令执行，标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。<BR><BR>　　7、使用Oracle locator方法插入、更新大对象（LOB）<BR><BR>　　Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理，尤其是Thin驱动程序不支持利用PreparedStatement对象的setObject()和setBinaryStream()方法设置BLOB的值，也不支持利用setCharacterStream()方法设置CLOB的值。只有locator本身中的方法才能够从数据库中获取LOB类型的值。可以使用PreparedStatement对象插入或更新LOB，但需要使用locator才能获取LOB的值。由于存在这二个问题，因此，我建议使用locator的方法来插入、更新或获取LOB的值。<BR><BR>　　8、使用SQL92语法调用存储过程<BR><BR>　　在调用存储过程时，我们可以使用SQL92或Oracle PL/SQL，由于使用Oracle PL/SQL并没有什么实际的好处，而且会给以后维护你的应用程序的开发人员带来麻烦，因此，我建议在调用存储过程时使用SQL92。<BR><BR>　　9、使用Object SQL将对象模式转移到数据库中<BR><BR>　　既然可以将Oracle的数据库作为一种面向对象的数据库来使用，就可以考虑将应用程序中的面向对象模式转到数据库中。目前的方法是创建Java bean作为伪装的数据库对象，将它们的属性映射到关系表中，然后在这些bean中添加方法。尽管这样作在Java中没有什么问题，但由于操作都是在数据库之外进行的，因此其他访问数据库的应用软件无法利用对象模式。如果利用Oracle的面向对象的技术，可以通过创建一个新的数据库对象类型在数据库中模仿其数据和操作，然后使用JPublisher等工具生成自己的Java bean类。如果使用这种方式，不但Java应用程序可以使用应用软件的对象模式，其他需要共享你的应用中的数据和操作的应用软件也可以使用应用软件中的对象模式。<BR><BR>　　10、利用SQL完成数据库内的操作<BR><BR>　　我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求，而不是使用Java等过程化的编程语言。<BR><BR>　　如果编程人员要在一个表中查找许多行，结果中的每个行都会查找其他表中的数据，最后，编程人员创建了独立的UPDATE命令来成批地更新第一个表中的数据。与此类似的任务可以通过在set子句中使用多列子查询而在一个UPDATE命令中完成。当能够在单一的SQL命令中完成任务，何必要让数据在网上流来流去的？我建议用户认真学习如何最大限度地发挥SQL的功能。</SPAN><img src ="http://www.blogjava.net/ltc603/aggbug/29233.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ltc603/" target="_blank">阿成</a> 2006-01-26 11:32 <a href="http://www.blogjava.net/ltc603/archive/2006/01/26/29233.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中的函数</title><link>http://www.blogjava.net/ltc603/archive/2006/01/18/28537.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Wed, 18 Jan 2006 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/ltc603/archive/2006/01/18/28537.html</guid><wfw:comment>http://www.blogjava.net/ltc603/comments/28537.html</wfw:comment><comments>http://www.blogjava.net/ltc603/archive/2006/01/18/28537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ltc603/comments/commentRss/28537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ltc603/services/trackbacks/28537.html</trackback:ping><description><![CDATA[<FONT face="Courier New">Oracle已经内建了许多函数，不同的函数有不同的作用和用法，有的函数只能作用在一个记录行上，有的能够作用在多个记录行上，不同的函数可能处理不同的数据类型。常见的有两类，单行函数和分组函数 。</FONT> 
<P class=MsoNormal style="MARGIN-LEFT: 38.95pt"><SPAN style="FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono">单行函数：</FONT></SPAN></P>
<TABLE style="BORDER-COLLAPSE: collapse" borderColor=#111111 cellSpacing=0 cellPadding=0 width="100%" border=1>
<TBODY>
<TR>
<TD width="100%" colSpan=4>
<P align=center><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>单行函数</FONT></SPAN></P></TD></TR>
<TR>
<TD align=middle width="8%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>分类</FONT></SPAN></TD>
<TD align=middle width="18%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>函数</FONT></SPAN></TD>
<TD align=middle width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>功能</FONT></SPAN></TD>
<TD align=middle width="32%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>示例</FONT></SPAN></TD></TR>
<TR>
<TD width="8%" rowSpan=10><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>字符函数</FONT></SPAN></TD>
<TD width="18%"><FONT face="Courier new, Courier, Mono" size=2>LPAD(&lt;c1&gt;,&lt;i&gt;[,&lt;c2&gt;])</FONT></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的左边添加字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">直到</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">字符串的长度等于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></TD>
<TD width="32%" rowSpan=2>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT&nbsp; LPAD(‘Hello!’,8,’ ’) leftpad,RPAD(‘Hello!’,8,’ ’) rightpad</FONT></SPAN></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>FROM DUAL;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><FONT face="Courier new, Courier, Mono" size=2>RPAD(&lt;c1&gt;,&lt;i&gt;[,&lt;c2&gt;])</FONT></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的右边添加字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">直到</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">字符串的长度等于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>LOWER(&lt;c1&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">把字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">转换为小写</SPAN></FONT></FONT></TD>
<TD width="32%" rowSpan=3><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT LOWER(ename)&nbsp; one,UPPER(ename) two, INITCAP(ename) FROM EMP;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>UPPER(&lt;c1&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">把字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">转换为大写</SPAN></FONT></FONT></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>INITCAP(&lt;c1&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">把</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">字符串的每一个单词的第一个字母转换成大写字母</SPAN></FONT></FONT></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>LENGTH(&lt;c1&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的长度</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT LENGTH(‘How are you’) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SUBSTR(&lt;c1&gt;,&lt;i&gt;[,&lt;j&gt;])</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">中从第</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">个位置开始的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">j</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">个字符（向右）。如果省略</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">j</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，则返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">中从第</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">个位置开始的所有字符。如果</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">j</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">为负，则返回字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">中从第</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">个位置开始的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">j</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">个字符（向左）。</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SUBSTR(‘Hello,World’,1,5) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><FONT face="Courier new, Courier, Mono" size=2>INSTR(&lt;c1&gt;,&lt;c2&gt;[,&lt;i&gt;[,&lt;j&gt;]])</FONT></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">中从位置</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">开始查找</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">中出第</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">j</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">次的位置，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">可以为负</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">(</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">此时，从</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的尾部开始</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">)</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US>SELECT INSTR(‘Mississippi’,’i’,3,3) FROM DUAL; </SPAN><SPAN style="FONT-FAMILY: 宋体">返回结果</SPAN><SPAN lang=EN-US>11</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">SELECT INSTR(‘Mississippi’,’i’,-2,3) FROM DUAL; </SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回结果</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>LTRIM(&lt;c1&gt;,&lt;c2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">从</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">前面开始去掉出现在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的中任何前导字符集。</SPAN></FONT></FONT></TD>
<TD width="32%" rowSpan=2><FONT face="Courier new, Courier, Mono" size=2>SELECT LTRIM(‘Mississippi’,’Mis’) FROM DUAL; 返回结果’ppi’。<BR><BR>SELECT RTRIM(‘Mississippi’,’ip’) FROM DUAL; 返回结果’Mississ’。<BR>　</FONT></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>RTRIM(&lt;c1&gt;,&lt;c2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">从</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">后面开始去掉出现在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的中任何前导字符集。</SPAN></FONT></FONT></TD></TR>
<TR>
<TD width="8%" rowSpan=9><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>数学函数</FONT></SPAN></TD>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>ABS(&lt;n&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的绝对值</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT ABC(-2),ABS(2) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>ROUND(&lt;n1&gt;,&lt;n2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的小数点后保留</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">位（四舍五入）并返回。如果</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">小于零，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">舍入到小数点左边。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT ROUND(12345.678,-2),</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 42pt; TEXT-ALIGN: left" align=left><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>ROUND(12345.678,2)</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-ALIGN: left" align=left><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>&nbsp;FROM&nbsp; DUAL; </FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">分别返回结果：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">12300</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">12345.68</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>CEIL(&lt;n&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n </SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">向上取整，并返回。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT CEIL(5.1),CEIL(-21.4) FROM&nbsp; DUAL;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">分别返回：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">6, -21</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>FLOOR(&lt;n&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n </SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">向下取整，并返回。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT FLOOR(5.1),FLOOR(-21.4) FROM&nbsp; DUAL;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">分别返回：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">5, -22</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>MOD(&lt;n1&gt;,&lt;n2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">模</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">后的余数。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT MOD(14,5),MOD(8,25),MOD(-64,7) FROM DUAL;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">分别返回结果：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">4</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">0.5</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">-1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SIGN(&lt;n&gt;)</FONT></SPAN></TD>
<TD width="42%">
<P class=MsoNormal><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-FAMILY: 宋体">符号函数，</SPAN><SPAN lang=EN-US>n&gt;0</SPAN><SPAN style="FONT-FAMILY: 宋体">，返回</SPAN><SPAN lang=EN-US>1</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P class=MsoNormal><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US>n&lt;0</SPAN><SPAN style="FONT-FAMILY: 宋体">，返回</SPAN><SPAN lang=EN-US>-1</SPAN><SPAN style="FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n=0</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">0</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SIGN(-2.3),SIGN(2.3),SIGN(0) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SQRT(&lt;n&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的平方根</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SQRT(9) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>TRUNC(&lt;n1&gt;,&lt;n2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">功能类似</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">ROUND</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">函数。但不做四舍五入。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT TRUNC(123.456,2),TRUNC(123.456,-1) FROM DUAL;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">分别返回结果：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">123.45</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">、</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">120</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>VSIZE(n)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回数字</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">n</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的存储字节</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT VSIZE(123) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="8%" rowSpan=6><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">日期函数</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">(</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">日期可以进行算术运算</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">)</SPAN></FONT></FONT></TD>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SYSDATE</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>返回相同日期</FONT></SPAN></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SYSDATE FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>ADD_MONTHS(&lt;d&gt;,&lt;i&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回日期</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">d </SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">加上</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">个月后的新日期</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">(i</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">正可负</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">)</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal style="MARGIN-LEFT: 42pt; TEXT-INDENT: -42pt; TEXT-ALIGN: left" align=left><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT SYSDATE, ADD_MONTHS(SYSDATE,2),</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 42pt; TEXT-ALIGN: left" align=left><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>ADD_MONTHS(SYSDATE,-2)</FONT></SPAN></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>FROM DUAL;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>LAST_DAY(&lt;d&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回日期</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">d</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">所在的月的最后一天。</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SYSDATE,LAST_DAY(SYSDATE) FROM DUAL</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>MONTHS_BETWEEN(&lt;d1&gt;,&lt;d2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回日期</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">d1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">比</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">d2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">大多少月数。</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT MONTHS_BETWEEN(’19-Dec-1999’,’19-Mar-2000’ FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>NEW_TIME(&lt;d&gt;,&lt;tz1&gt;,&lt;tz2&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将时区</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">tz1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的时间</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">d</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，转换为时区</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">tz2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">里的时间。</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SYSDATE,NEW_TIME(SYSDATE,’CDT’,’PDT’) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>NEXT_DAY(&lt;d&gt;,&lt;dow&gt;)</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">返回日期</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">d</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">后的第一个</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">dow</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">(dow</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">day of week)</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT NEXT_DAY(SYSDATE,’Monday’) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="8%" rowSpan=3><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>常用转换函数</FONT></SPAN></TD>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>TO_CHAR(&lt;x&gt;[,&lt;fmt&gt;[,&lt;nlsparm&gt;]])</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">x</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">转换成字符串。（参数含义请看</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">ORACLE</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的联机帮助）</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT TO_CHAR(SYSDATE,’YYYY-MM-DD’) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>TO_NUMBER(&lt;c&gt;[,&lt;fmt&gt;[,&lt;nlsparm&gt;]])</FONT></SPAN></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">转换成数字。（参数含义请看</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">ORACLE</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">的联机帮助）</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT TO_NUMBER(‘123’) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>TO_DATE(&lt;c&gt;[,&lt;fmt&gt;[,&lt;nlsparm&gt;]])</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">(</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">常见的日期格式请查联机帮助。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">)</SPAN></FONT></FONT></P></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">将字符串</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">c</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">转换成日期。</SPAN></FONT></FONT></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT TO_DATE(’19-Mar-99’,’DD-Mon-YYYY’) FROM DUAL;</FONT></SPAN></TD></TR>
<TR>
<TD width="8%" rowSpan=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>两个重要函数</FONT></SPAN></TD>
<TD width="18%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>DECODE(&lt;x&gt;,&lt;m1&gt;,&lt;r1&gt;[,&lt;m2&gt;,</FONT></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>&lt;r2…&gt;][,&lt;d&gt;])</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">(DECODE</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">函数功能非常强大，请仔细玩味。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">)</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">一个功能非常强大的函数，它使得</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">SQL</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">非常高效。它的功能类似于一系列的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">if…then…else</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">语句。</SPAN></FONT></FONT></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT sid,serial#,username,</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 31.5pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>DECODE(command</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,0,’None’</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,2,’Insert’</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,3,’Select’</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,6,’Update’</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,7,’Delete’</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,8,’Drop</FONT></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 84pt"><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>,’Other’) cmd</FONT></SPAN></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>FROM V$SESSION WHERE type&lt;&gt;’BACKGROUND’;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>NVL(x1,x2)</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">注意</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">ORACLE</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">中的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">NULL</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">值，注意该函数作用</SPAN></FONT></FONT></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD>
<TD width="42%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">如果</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">x1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">为空返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">x2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">，否则返回</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">x1</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">。</SPAN></FONT></FONT></TD>
<TD width="32%"><FONT face="Courier new, Courier, Mono"><FONT size=2><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">SELECT NVL(ename,’</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体">无姓名</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman">’)&nbsp; FROM&nbsp; EMP;</SPAN></FONT></FONT></TD></TR>
<TR>
<TD width="100%" colSpan=4>
<P align=center><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>分组函数</FONT></SPAN></P></TD></TR>
<TR>
<TD width="8%" rowSpan=7><FONT face="Courier new, Courier, Mono" size=2>　</FONT></TD>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>AVG([{DISTINCT|ALL}]&lt;n&gt;)</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>求返回行的指定列的平均值</FONT></SPAN></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT AVG(sal),AVG(ALL sal),AVG(DISTINCT sal) </FONT></SPAN></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>FROM SCOTT.EMP;</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>COUNT({*|[DISTINCT|ALL]}&lt;x&gt;)</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>统计返回的行数</FONT></SPAN></TD>
<TD width="32%">
<P class=MsoNormal><SPAN lang=EN-US><FONT face="Courier new, Courier, Mono" size=2>SELECT COUNT (*), COUNT(DISTINCT mgr),COUNT(mgr)</FONT></SPAN></P>
<P><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>FROM SCOTT.EMP</FONT></SPAN></P>
<P><FONT face="Courier new, Courier, Mono" size=2>　</FONT></P></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>MAX([{DISTINCT|ALL}]&lt;x&gt;)</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>求返回行的指定列的最大值</FONT></SPAN></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT MAX(sal),MAX(DISTINCT sal) FROM EMP;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>MIN([{DISTINCT|ALL}]&lt;x&gt;)</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>求返回行的指定列的最小值</FONT></SPAN></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT MIN(sal),MIN(DISTINCT sal) FROM EMP;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>STDDEV([{DISTINCT|ALL}]&lt;x&gt;)</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>求返回行的指定列的标准方差</FONT></SPAN></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT STDDEV(sal),STDDEV(DISTINCT sal) FROM EMP;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SUM()</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>求返回行的指定列的和</FONT></SPAN></TD>
<TD width="32%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>SELECT SUM(sal) FROM EMP;</FONT></SPAN></TD></TR>
<TR>
<TD width="18%"><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Times New Roman"><FONT face="Courier new, Courier, Mono" size=2>VARIANCE()</FONT></SPAN></TD>
<TD width="42%"><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono" size=2>求返回行的指定列的差异值</FONT></SPAN></TD>
<TD width="32%"><FONT face="Courier new, Courier, Mono" size=2>　</FONT></TD></TR></TBODY></TABLE>
<P class=MsoNormal style="MARGIN-LEFT: 38.95pt"><FONT face="Courier new, Courier, Mono">　</FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 38.95pt"><FONT face="Courier new, Courier, Mono">　</FONT></P>
<P class=MsoNormal><SPAN style="FONT-FAMILY: 宋体"><FONT face="Courier new, Courier, Mono">&nbsp;&nbsp;&nbsp;&nbsp; 注意：</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt"><FONT face="Courier new, Courier, Mono"><SPAN lang=EN-US>A、<SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2> </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">分组函数不会处理空值，也不会返回空值</SPAN>；</FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt"><FONT face="Courier new, Courier, Mono"><SPAN lang=EN-US>B、<FONT size=2><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"> </SPAN>&nbsp;</FONT></SPAN><SPAN style="FONT-FAMILY: 宋体">所有的分组函数既可以作用于指定列的所有值上，也可以只作用于指定列的差异列值上</SPAN>；</FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt"><FONT face="Courier new, Courier, Mono"><SPAN lang=EN-US>C、<SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-FAMILY: Times New Roman; FONT-VARIANT: normal"><FONT size=2> </FONT></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体">当指定</SPAN><SPAN lang=EN-US>ALL</SPAN><SPAN style="FONT-FAMILY: 宋体">选项时，分组函数作用于所有非空列值行上。当指定</SPAN><SPAN lang=EN-US>DISTINCT</SPAN><SPAN style="FONT-FAMILY: 宋体">选项时，分组函数只作用于非空的且具有不同列值的行上（即，重复列值的行只计算一行）；</SPAN></FONT></P><img src ="http://www.blogjava.net/ltc603/aggbug/28537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ltc603/" target="_blank">阿成</a> 2006-01-18 17:41 <a href="http://www.blogjava.net/ltc603/archive/2006/01/18/28537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些常用的SQL语句</title><link>http://www.blogjava.net/ltc603/archive/2006/01/14/28030.html</link><dc:creator>阿成</dc:creator><author>阿成</author><pubDate>Sat, 14 Jan 2006 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/ltc603/archive/2006/01/14/28030.html</guid><wfw:comment>http://www.blogjava.net/ltc603/comments/28030.html</wfw:comment><comments>http://www.blogjava.net/ltc603/archive/2006/01/14/28030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ltc603/comments/commentRss/28030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ltc603/services/trackbacks/28030.html</trackback:ping><description><![CDATA[判断在某段时间内<br />一.select * from table where talbe.time between to_date('2006-1-15','yyyy-mm-dd') and to_date('2008-1-15','yyyy-mm-dd') order by talbe.time;<br /><br />二.select * from table where talbe.time between trunc(date(formDate) )and trunc(date(toDate) )order by talbe.time;<br /><br />查询匹配<br />select * from table where lower(table.username) like % + username.toLower()%;<br /><br />三.如何获得前N条记录<br /><div class="postbody"><p>1. ORACLE <br />SELECT * FROM TABLE1 WHERE ROWNUM&lt;=N </p><p>2. INFORMIX <br />SELECT FIRST N * FROM TABLE1 where 1=1 </p><p>3. DB2 <br />SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM&lt;=N <br />或者<br />SELECT COLUMN FROM TABLE where 1=1 FETCH FIRST N ROWS ONLY </p><p>4. SQL SERVER <br />SELECT TOP N * FROM TABLE1 where 1=1 <br />or<br />SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1</p><p>5. SYBASE <br />SET ROWCOUNT N SELECT * FROM TABLE1 where 1=1 SET ROWCOUNT N1</p><p>6. MYSQL <br />SELECT * FROM TABLE1 where 1=1 LIMIT N </p><p>7. FOXPRO <br />SELECT * TOP N FROM TABLE ORDER BY COLUMN</p><p>8. ACCESS <br />SELECT TOP N * FROM TABLE1 where 1=1</p></div><img src ="http://www.blogjava.net/ltc603/aggbug/28030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ltc603/" target="_blank">阿成</a> 2006-01-14 15:27 <a href="http://www.blogjava.net/ltc603/archive/2006/01/14/28030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>