﻿<?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-我思故我强-文章分类-Oracle</title><link>http://www.blogjava.net/balajinima/category/26965.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 27 Dec 2007 07:15:39 GMT</lastBuildDate><pubDate>Thu, 27 Dec 2007 07:15:39 GMT</pubDate><ttl>60</ttl><item><title>oracle递归查询语句</title><link>http://www.blogjava.net/balajinima/articles/170236.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Tue, 25 Dec 2007 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/170236.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/170236.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/170236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/170236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/170236.html</trackback:ping><description><![CDATA[
		<p>oracle递归查询语句<br />表结构：表 fso_sdept， 字段 dept_id（部门ID）、dept_name（部门名称）、dept_p_id（父部门ID） <br /><br />包含父部门和子部门<br />select dept_id,dept_name from fso_sdept where dept_stat=1 <br />start with dept_id=1129 connect by prior dept_id=dept_p_id<br /><br />不包含父部门只包含子部门<br />select dept_id,dept_name from fso_sdept where dept_stat=1 <br />start with dept_p_id=1129  connect by prior dept_id=dept_p_id</p>
<img src ="http://www.blogjava.net/balajinima/aggbug/170236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-12-25 10:06 <a href="http://www.blogjava.net/balajinima/articles/170236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中Decode()函数使用技巧</title><link>http://www.blogjava.net/balajinima/articles/133111.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Sun, 29 Jul 2007 05:19:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/133111.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/133111.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/133111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/133111.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/133111.html</trackback:ping><description><![CDATA[
		<p>
				<br />　　decode()函数是ORACLE PL/SQL是功能强大的函数之一，目前还只有ORACLE公司的SQL提供了此函数，其他数据库厂商的SQL实现还没有此功能。<br />      DECODE函数是ORACLE PL/SQL是功能强大的函数之一，目前还只有ORACLE公司的SQL提供了此函数，其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢？ 先构造一个例子，假设我们想给智星职员加工资，其标准是：工资在8000元以下的将加20％；工资在8000元以上的加15％，通常的做法是，先选出记录中的工资字段值? select salary into var-salary from employee，然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用DECODE函数，那么我们就可以把这些流控制语句省略，通过SQL语句就可以直接完成。如下：select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很简洁？ DECODE的语法：DECODE(value,if1,then1,if2,then2,if3,then3,...,else)，表示如果value等于if1时，DECODE函数的结果返回then1,...,如果不等于任何一个if值，则返回else。初看一下，DECODE 只能做等于测试，但刚才也看到了，我们通过一些函数或计算替代value，是可以使DECODE函数具备大于、小于或等于功能。</p>
		<p>　　decode()函数使用技巧</p>
		<p>　　·软件环境:</p>
		<p>　　1、Windows NT4.0+ORACLE 8.0.4</p>
		<p>　　2、ORACLE安装路径为:C:\ORANT</p>
		<p>　　·含义解释:</p>
		<p>　　decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)</p>
		<p>　　该函数的含义如下:</p>
		<p>　　IF 条件=值1 THEN</p>
		<p>　　RETURN(翻译值1)</p>
		<p>　　ELSIF 条件=值2 THEN</p>
		<p>　　RETURN(翻译值2)</p>
		<p>　　......</p>
		<p>　　ELSIF 条件=值n THEN</p>
		<p>　　RETURN(翻译值n)</p>
		<p>　　ELSE</p>
		<p>　　RETURN(缺省值)</p>
		<p>　　END IF</p>
		<p>　　· 使用方法:</p>
		<p>　　1、比较大小</p>
		<p>　　select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值</p>
		<p>　　sign()函数根据某个值是0、正数还是负数，分别返回0、1、-1</p>
		<p>　　例如:</p>
		<p>　　变量1=10，变量2=20</p>
		<p>　　则sign(变量1-变量2)返回-1，decode解码结果为“变量1”，达到了取较小值的目的。</p>
		<p>　　2、表、视图结构转化</p>
		<p>　　现有一个商品销售表sale，表结构为:</p>
		<p>　　month　　　 char(6)　　　　　 --月份</p>
		<p>　　sell　　　　number(10,2)　　　--月销售金额</p>
		<p>　　现有数据为:</p>
		<p>　　200001　　1000</p>
		<p>　　200002　　1100</p>
		<p>　　200003　　1200</p>
		<p>　　200004　　1300</p>
		<p>　　200005　　1400</p>
		<p>　　200006　　1500</p>
		<p>　　200007　　1600</p>
		<p>　　200101　　1100</p>
		<p>　　200202　　1200</p>
		<p>　　200301　　1300</p>
		<p>　　想要转化为以下结构的数据:</p>
		<p>　　year　　　char(4)　　　　　 --年份</p>
		<p>　　month1　　number(10,2)　　　--1月销售金额</p>
		<p>　　month2　　number(10,2)　　　--2月销售金额</p>
		<p>　　month3　　number(10,2)　　　--3月销售金额</p>
		<p>　　month4　　number(10,2)　　　--4月销售金额</p>
		<p>　　month5　　number(10,2)　　　--5月销售金额</p>
		<p>　　month6　　number(10,2)　　　--6月销售金额</p>
		<p>　　month7　　number(10,2)　　　--7月销售金额</p>
		<p>　　month8　　number(10,2)　　　--8月销售金额</p>
		<p>　　month9　　number(10,2)　　　--9月销售金额</p>
		<p>　　month10　　number(10,2)　　　--10月销售金额</p>
		<p>　　month11　　number(10,2)　　　--11月销售金额</p>
		<p>　　month12　　number(10,2)　　　--12月销售金额</p>
		<p>　　结构转化的SQL语句为:</p>
		<p>　　create or replace view</p>
		<p>　　v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)</p>
		<p>　　as</p>
		<p>　　select</p>
		<p>　　substrb(month,1,4),</p>
		<p>　　sum(decode(substrb(month,5,2),'01',sell,0)),</p>
		<p>　　sum(decode(substrb(month,5,2),'02',sell,0)),</p>
		<p>　　sum(decode(substrb(month,5,2),'03',sell,0)),</p>
		<p>　　sum(decode(substrb(month,5,2),'04',sell,0)),<br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/133111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-07-29 13:19 <a href="http://www.blogjava.net/balajinima/articles/133111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle函数大全</title><link>http://www.blogjava.net/balajinima/articles/132972.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Sat, 28 Jul 2007 05:27:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/132972.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/132972.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/132972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/132972.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/132972.html</trackback:ping><description><![CDATA[
		<p>Oracle函数大全 <br /> </p>
		<p>
				<br /> <br />SQL中的单记录函数 <br />1.ASCII <br />返回与指定的字符对应的十进制数; <br />SQL&gt; select ascii(’A’) A,ascii(’a’) a,ascii(’0’) zero,ascii(’ ’) space from dual; <br />A A ZERO SPACE <br />--------- --------- --------- --------- <br />65 97 48 32 </p>
		<p>2.CHR <br />给出整数,返回对应的字符; <br />SQL&gt; select chr(54740) zhao,chr(65) chr65 from dual; <br />ZH C <br />-- - <br />赵 A <br />3.CONCAT <br />连接两个字符串; <br />SQL&gt; select concat(’010-’,’88888888’)||’转23’ 高乾竞电话 from dual; <br />高乾竞电话 <br />---------------- <br />010-88888888转23 <br />4.INITCAP <br />返回字符串并将字符串的第一个字母变为大写; <br />SQL&gt; select initcap(’smith’) upp from dual; <br />UPP <br />----- <br />Smith </p>
		<p>5.INSTR(C1,C2,I,J) <br />在一个字符串中搜索指定的字符,返回发现指定的字符的位置; <br />C1 被搜索的字符串 <br />C2 希望搜索的字符串 <br />I 搜索的开始位置,默认为1 <br />J 出现的位置,默认为1 <br />SQL&gt; select instr(’oracle traning’,’ra’,1,2) instring from dual; <br />INSTRING <br />--------- <br />9 </p>
		<p>6.LENGTH <br />返回字符串的长度; <br />SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; <br />NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL)) <br />------ ------------ ---------------- ------------ --------- -------------------- <br />高乾竞 3 北京市海锭区 6 9999.99 7 </p>
		<p>7.LOWER <br />返回字符串,并将所有的字符小写 <br />SQL&gt; select lower(’AaBbCcDd’)AaBbCcDd from dual; <br />AABBCCDD <br />-------- <br />aabbccdd </p>
		<p>8.UPPER <br />返回字符串,并将所有的字符大写 <br />SQL&gt; select upper(’AaBbCcDd’) upper from dual; <br />UPPER <br />-------- <br />AABBCCDD </p>
		<p>9.RPAD和LPAD(粘贴字符) <br />RPAD 在列的右边粘贴字符 <br />LPAD 在列的左边粘贴字符 <br />SQL&gt; select lpad(rpad(’gao’,10,’*’),17,’*’)from dual; <br />LPAD(RPAD(’GAO’,1 <br />----------------- <br />*******gao******* <br />不够字符则用*来填满 </p>
		<p>10.LTRIM和RTRIM <br />LTRIM 删除左边出现的字符串 <br />RTRIM 删除右边出现的字符串 <br />SQL&gt; select ltrim(rtrim(’ gao qian jing ’,’ ’),’ ’) from dual; <br />LTRIM(RTRIM(’ <br />------------- <br />gao qian jing </p>
		<p>11.SUBSTR(string,start,count) <br />取子字符串,从start开始,取count个 <br />SQL&gt; select substr(’13088888888’,3,8) from dual; <br />SUBSTR(’ <br />-------- <br />08888888 </p>
		<p>12.REPLACE(’string’,’s1’,’s2’) <br />string 希望被替换的字符或变量 <br />s1 被替换的字符串 <br />s2 要替换的字符串 <br />SQL&gt; select replace(’he love you’,’he’,’i’) from dual; <br />REPLACE(’H <br />---------- <br />i love you </p>
		<p>13.SOUNDEX <br />返回一个与给定的字符串读音相同的字符串 <br />SQL&gt; create table table1(xm varchar(8)); <br />SQL&gt; insert into table1 values(’weather’); <br />SQL&gt; insert into table1 values(’wether’); <br />SQL&gt; insert into table1 values(’gao’); <br />SQL&gt; select xm from table1 where soundex(xm)=soundex(’weather’); <br />XM <br />-------- <br />weather <br />wether </p>
		<p>14.TRIM(’s’ from ’string’) <br />LEADING 剪掉前面的字符 <br />TRAILING 剪掉后面的字符 <br />如果不指定,默认为空格符 <br />15.ABS <br />返回指定值的绝对值 <br />SQL&gt; select abs(100),abs(-100) from dual; <br />ABS(100) ABS(-100) <br />--------- --------- <br />100 100 </p>
		<p>16.ACOS <br />给出反余弦的值 <br />SQL&gt; select acos(-1) from dual; <br />ACOS(-1) <br />--------- <br />3.1415927 </p>
		<p>17.ASIN <br />给出反正弦的值 <br />SQL&gt; select asin(0.5) from dual; <br />ASIN(0.5) <br />--------- <br />.52359878 </p>
		<p>18.ATAN <br />返回一个数字的反正切值 <br />SQL&gt; select atan(1) from dual; <br />ATAN(1) <br />--------- <br />.78539816 </p>
		<p>19.CEIL <br />返回大于或等于给出数字的最小整数 <br />SQL&gt; select ceil(3.1415927) from dual; <br />CEIL(3.1415927) <br />--------------- <br />4 </p>
		<p>20.COS <br />返回一个给定数字的余弦 <br />SQL&gt; select cos(-3.1415927) from dual; <br />COS(-3.1415927) <br />--------------- <br />-1<br />21.COSH <br />返回一个数字反余弦值 <br />SQL&gt; select cosh(20) from dual; <br />COSH(20) <br />--------- <br />242582598 </p>
		<p>22.EXP <br />返回一个数字e的n次方根 <br />SQL&gt; select exp(2),exp(1) from dual; <br />EXP(2) EXP(1) <br />--------- --------- <br />7.3890561 2.7182818 </p>
		<p>23.FLOOR <br />对给定的数字取整数 <br />SQL&gt; select floor(2345.67) from dual; <br />FLOOR(2345.67) <br />-------------- <br />2345 </p>
		<p>24.LN <br />返回一个数字的对数值 <br />SQL&gt; select ln(1),ln(2),ln(2.7182818) from dual; <br />LN(1) LN(2) LN(2.7182818) <br />--------- --------- ------------- <br />0 .69314718 .99999999 </p>
		<p>25.LOG(n1,n2) <br />返回一个以n1为底n2的对数 <br />SQL&gt; select log(2,1),log(2,4) from dual; <br />LOG(2,1) LOG(2,4) <br />--------- --------- <br />0 2 </p>
		<p>26.MOD(n1,n2) <br />返回一个n1除以n2的余数 <br />SQL&gt; select mod(10,3),mod(3,3),mod(2,3) from dual; <br />MOD(10,3) MOD(3,3) MOD(2,3) <br />--------- --------- --------- <br />1 0 2 </p>
		<p>27.POWER <br />返回n1的n2次方根 <br />SQL&gt; select power(2,10),power(3,3) from dual; <br />POWER(2,10) POWER(3,3) <br />----------- ---------- <br />1024 27 </p>
		<p>28.ROUND和TRUNC <br />按照指定的精度进行舍入 <br />SQL&gt; select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual; <br />ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5) <br />----------- ------------ ----------- ------------ <br />56 -55 55 -55 </p>
		<p>29.SIGN <br />取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 <br />SQL&gt; select sign(123),sign(-100),sign(0) from dual; <br />SIGN(123) SIGN(-100) SIGN(0) <br />--------- ---------- --------- <br />1 -1 0 </p>
		<p>30.SIN <br />返回一个数字的正弦值 <br />SQL&gt; select sin(1.57079) from dual; <br />SIN(1.57079) <br />------------ <br />1 </p>
		<p>31.SIGH <br />返回双曲正弦的值 <br />SQL&gt; select sin(20),sinh(20) from dual; <br />SIN(20) SINH(20) <br />--------- --------- <br />.91294525 242582598 </p>
		<p>32.SQRT <br />返回数字n的根 <br />SQL&gt; select sqrt(64),sqrt(10) from dual; <br />SQRT(64) SQRT(10) <br />--------- --------- <br />8 3.1622777 </p>
		<p>33.TAN <br />返回数字的正切值 <br />SQL&gt; select tan(20),tan(10) from dual; <br />TAN(20) TAN(10) <br />--------- --------- <br />2.2371609 .64836083 </p>
		<p>34.TANH <br />返回数字n的双曲正切值 <br />SQL&gt; select tanh(20),tan(20) from dual; <br />TANH(20) TAN(20) <br />--------- --------- <br />1 2.2371609 </p>
		<p>35.TRUNC <br />按照指定的精度截取一个数 <br />SQL&gt; select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual; <br />TRUNC1 TRUNC(124.16666,2) <br />--------- ------------------ <br />100 124.16 </p>
		<p>36.ADD_MONTHS <br />增加或减去月份 <br />SQL&gt; select to_char(add_months(to_date(’199912’,’yyyymm’),2),’yyyymm’) from dual; <br />TO_CHA <br />------ <br />200002 <br />SQL&gt; select to_char(add_months(to_date(’199912’,’yyyymm’),-2),’yyyymm’) from dual; <br />TO_CHA <br />------ <br />199910 </p>
		<p>37.LAST_DAY <br />返回日期的最后一天 <br />SQL&gt; select to_char(sysdate,’yyyy.mm.dd’),to_char((sysdate)+1,’yyyy.mm.dd’) from dual; <br />TO_CHAR(SY TO_CHAR((S <br />---------- ---------- <br />2004.05.09 2004.05.10 <br />SQL&gt; select last_day(sysdate) from dual; <br />LAST_DAY(S <br />---------- <br />31-5月 -04 </p>
		<p>38.MONTHS_BETWEEN(date2,date1) <br />给出date2-date1的月份 <br />SQL&gt; select months_between(’19-12月-1999’,’19-3月-1999’) mon_between from dual; <br />MON_BETWEEN <br />----------- <br />9 <br />SQL&gt;selectmonths_between(to_date(’2000.05.20’,’yyyy.mm.dd’),to_date(’2005.05.20’,’yyyy.mm.dd’)) mon_betw from dual; <br />MON_BETW <br />--------- <br />-60 </p>
		<p>39.NEW_TIME(date,’this’,’that’) <br />给出在this时区=other时区的日期和时间 <br />SQL&gt; select to_char(sysdate,’yyyy.mm.dd hh24:mi:ss’) bj_time,to_char(new_time <br />2 (sysdate,’PDT’,’GMT’),’yyyy.mm.dd hh24:mi:ss’) los_angles from dual; <br />BJ_TIME LOS_ANGLES <br />------------------- ------------------- <br />2004.05.09 11:05:32 2004.05.09 18:05:32 </p>
		<p>40.NEXT_DAY(date,’day’) <br />给出日期date和星期x之后计算下一个星期的日期 <br />SQL&gt; select next_day(’18-5月-2001’,’星期五’) next_day from dual; <br />NEXT_DAY <br />---------- <br />25-5月 -01<br />41.SYSDATE <br />用来得到系统的当前日期 <br />SQL&gt; select to_char(sysdate,’dd-mm-yyyy day’) from dual; <br />TO_CHAR(SYSDATE,’ <br />----------------- <br />09-05-2004 星期日 <br />trunc(date,fmt)按照给出的要求将日期截断,如果fmt=’mi’表示保留分,截断秒 <br />SQL&gt; select to_char(trunc(sysdate,’hh’),’yyyy.mm.dd hh24:mi:ss’) hh, <br />2 to_char(trunc(sysdate,’mi’),’yyyy.mm.dd hh24:mi:ss’) hhmm from dual; <br />HH HHMM <br />------------------- ------------------- <br />2004.05.09 11:00:00 2004.05.09 11:17:00 </p>
		<p>42.CHARTOROWID <br />将字符数据类型转换为ROWID类型 <br />SQL&gt; select rowid,rowidtochar(rowid),ename from scott.emp; <br />ROWID ROWIDTOCHAR(ROWID) ENAME <br />------------------ ------------------ ---------- <br />AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH <br />AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN <br />AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD <br />AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES </p>
		<p>43.CONVERT(c,dset,sset) <br />将源字符串 sset从一个语言字符集转换到另一个目的dset字符集 <br />SQL&gt; select convert(’strutz’,’we8hp’,’f7dec’) "conversion" from dual; <br />conver <br />------ <br />strutz </p>
		<p>44.HEXTORAW <br />将一个十六进制构成的字符串转换为二进制 </p>
		<p>45.RAWTOHEXT <br />将一个二进制构成的字符串转换为十六进制 </p>
		<p>46.ROWIDTOCHAR <br />将ROWID数据类型转换为字符类型 </p>
		<p>47.TO_CHAR(date,’format’) <br />SQL&gt; select to_char(sysdate,’yyyy/mm/dd hh24:mi:ss’) from dual; <br />TO_CHAR(SYSDATE,’YY <br />------------------- <br />2004/05/09 21:14:41 </p>
		<p>48.TO_DATE(string,’format’) <br />将字符串转化为ORACLE中的一个日期 </p>
		<p>49.TO_MULTI_BYTE <br />将字符串中的单字节字符转化为多字节字符 <br />SQL&gt; select to_multi_byte(’高’) from dual; <br />TO <br />-- <br />高 </p>
		<p>50.TO_NUMBER <br />将给出的字符转换为数字 <br />SQL&gt; select to_number(’1999’) year from dual; <br />YEAR <br />--------- <br />1999 </p>
		<p>51.BFILENAME(dir,file) <br />指定一个外部二进制文件 <br />SQL&gt;insert into file_tb1 values(bfilename(’lob_dir1’,’image1.gif’)); </p>
		<p>52.CONVERT(’x’,’desc’,’source’) <br />将x字段或变量的源source转换为desc <br />SQL&gt; select sid,serial#,username,decode(command, <br />2 0,’none’, <br />3 2,’insert’, <br />4 3, <br />5 ’select’, <br />6 6,’update’, <br />7 7,’delete’, <br />8 8,’drop’, <br />9 ’other’) cmd from v$session where type!=’background’; <br />SID SERIAL# USERNAME CMD <br />--------- --------- ------------------------------ ------ <br />1 1 none <br />2 1 none <br />3 1 none <br />4 1 none <br />5 1 none <br />6 1 none <br />7 1275 none <br />8 1275 none <br />9 20 GAO select <br />10 40 GAO none </p>
		<p>53.DUMP(s,fmt,start,length) <br />DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值 <br />SQL&gt; col global_name for a30 <br />SQL&gt; col dump_string for a50 <br />SQL&gt; set lin 200 <br />SQL&gt; select global_name,dump(global_name,1017,8,5) dump_string from global_name; <br />GLOBAL_NAME DUMP_STRING <br />------------------------------ -------------------------------------------------- <br />ORACLE.WORLD Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D </p>
		<p>54.EMPTY_BLOB()和EMPTY_CLOB() <br />这两个函数都是用来对大数据类型字段进行初始化操作的函数 </p>
		<p>55.GREATEST <br />返回一组表达式中的最大值,即比较字符的编码大小. <br />SQL&gt; select greatest(’AA’,’AB’,’AC’) from dual; <br />GR <br />-- <br />AC <br />SQL&gt; select greatest(’啊’,’安’,’天’) from dual; <br />GR <br />-- <br />天 </p>
		<p>56.LEAST <br />返回一组表达式中的最小值 <br />SQL&gt; select least(’啊’,’安’,’天’) from dual; <br />LE <br />-- <br />啊 </p>
		<p>57.UID <br />返回标识当前用户的唯一整数 <br />SQL&gt; show user <br />USER 为"GAO" <br />SQL&gt; select username,user_id from dba_users where user_id=uid; <br />USERNAME USER_ID <br />------------------------------ --------- <br />GAO 25 </p>
		<p>58.USER <br />返回当前用户的名字 <br />SQL&gt; select user from dual; <br />USER <br />------------------------------ <br />GAO </p>
		<p>59.USEREVN <br />返回当前用户环境的信息,opt可以是: <br />ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE <br />ISDBA 查看当前用户是否是DBA如果是则返回true <br />SQL&gt; select userenv(’isdba’) from dual; <br />USEREN <br />------ <br />FALSE <br />SQL&gt; select userenv(’isdba’) from dual; <br />USEREN <br />------ <br />TRUE <br />SESSION <br />返回会话标志 <br />SQL&gt; select userenv(’sessionid’) from dual; <br />USERENV(’SESSIONID’) <br />-------------------- <br />152 <br />ENTRYID <br />返回会话人口标志 <br />SQL&gt; select userenv(’entryid’) from dual; <br />USERENV(’ENTRYID’) <br />------------------ <br />0 <br />INSTANCE <br />返回当前INSTANCE的标志 <br />SQL&gt; select userenv(’instance’) from dual; <br />USERENV(’INSTANCE’) <br />------------------- <br />1 <br />LANGUAGE <br />返回当前环境变量 <br />SQL&gt; select userenv(’language’) from dual; <br />USERENV(’LANGUAGE’) <br />---------------------------------------------------- <br />SIMPLIFIED CHINESE_CHINA.ZHS16GBK <br />LANG <br />返回当前环境的语言的缩写 <br />SQL&gt; select userenv(’lang’) from dual; <br />USERENV(’LANG’) <br />---------------------------------------------------- <br />ZHS <br />TERMINAL <br />返回用户的终端或机器的标志 <br />SQL&gt; select userenv(’terminal’) from dual; <br />USERENV(’TERMINA <br />---------------- <br />GAO <br />VSIZE(X) <br />返回X的大小(字节)数 <br />SQL&gt; select vsize(user),user from dual; <br />VSIZE(USER) USER <br />----------- ------------------------------ <br />6 SYSTEM<br />60.AVG(DISTINCT|ALL) <br />all表示对所有的值求平均值,distinct只对不同的值求平均值 <br />SQLWKS&gt; create table table3(xm varchar(8),sal number(7,2)); <br />语句已处理。 <br />SQLWKS&gt; insert into table3 values(’gao’,1111.11); <br />SQLWKS&gt; insert into table3 values(’gao’,1111.11); <br />SQLWKS&gt; insert into table3 values(’zhu’,5555.55); <br />SQLWKS&gt; commit; <br />SQL&gt; select avg(distinct sal) from gao.table3; <br />AVG(DISTINCTSAL) <br />---------------- <br />3333.33 <br />SQL&gt; select avg(all sal) from gao.table3; <br />AVG(ALLSAL) <br />----------- <br />2592.59 </p>
		<p>61.MAX(DISTINCT|ALL) <br />求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次 <br />SQL&gt; select max(distinct sal) from scott.emp; <br />MAX(DISTINCTSAL) <br />---------------- <br />5000 </p>
		<p>62.MIN(DISTINCT|ALL) <br />求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次 <br />SQL&gt; select min(all sal) from gao.table3; <br />MIN(ALLSAL) <br />----------- <br />1111.11 </p>
		<p>63.STDDEV(distinct|all) <br />求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差 <br />SQL&gt; select stddev(sal) from scott.emp; <br />STDDEV(SAL) <br />----------- <br />1182.5032 <br />SQL&gt; select stddev(distinct sal) from scott.emp; <br />STDDEV(DISTINCTSAL) <br />------------------- <br />1229.951 </p>
		<p>64.VARIANCE(DISTINCT|ALL) <br />求协方差 <br />SQL&gt; select variance(sal) from scott.emp; <br />VARIANCE(SAL) <br />------------- <br />1398313.9 </p>
		<p>65.GROUP BY <br />主要用来对一组数进行统计 <br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno; <br />DEPTNO COUNT(*) SUM(SAL) <br />--------- --------- --------- <br />10 3 8750 <br />20 5 10875 <br />30 6 9400 </p>
		<p>66.HAVING <br />对分组统计再加限制条件 <br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)&gt;=5; <br />DEPTNO COUNT(*) SUM(SAL) <br />--------- --------- --------- <br />20 5 10875 <br />30 6 9400 <br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp having count(*)&gt;=5 group by deptno ; <br />DEPTNO COUNT(*) SUM(SAL) <br />--------- --------- --------- <br />20 5 10875 <br />30 6 9400 </p>
		<p>67.ORDER BY <br />用于对查询到的结果进行排序输出 <br />SQL&gt; select deptno,ename,sal from scott.emp order by deptno,sal desc; <br />DEPTNO ENAME SAL <br />--------- ---------- --------- <br />10 KING 5000 <br />10 CLARK 2450 <br />10 MILLER 1300 <br />20 SCOTT 3000 <br />20 FORD 3000 <br />20 JONES 2975 <br />20 ADAMS 1100 <br />20 SMITH 800 <br />30 BLAKE 2850 <br />30 ALLEN 1600 <br />30 TURNER 1500 <br />30 WARD 1250 <br />30 MARTIN 1250 <br />30 JAMES 950 <br /> <br /></p>
<img src ="http://www.blogjava.net/balajinima/aggbug/132972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-07-28 13:27 <a href="http://www.blogjava.net/balajinima/articles/132972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle里的判断函数decode</title><link>http://www.blogjava.net/balajinima/articles/132967.html</link><dc:creator>李云泽</dc:creator><author>李云泽</author><pubDate>Sat, 28 Jul 2007 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/balajinima/articles/132967.html</guid><wfw:comment>http://www.blogjava.net/balajinima/comments/132967.html</wfw:comment><comments>http://www.blogjava.net/balajinima/articles/132967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/balajinima/comments/commentRss/132967.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/balajinima/services/trackbacks/132967.html</trackback:ping><description><![CDATA[一个类似于判断的函数.它就是DECODE. <br /><br />先来看看它的用法 decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) <br /><br />它的意思也就是这样 <br /><br />IF 条件=值1 THEN <br />　　　　RETURN(翻译值1) <br />ELSIF 条件=值2 THEN <br />　　　　RETURN(翻译值2) <br />　　　　...... <br />ELSIF 条件=值n THEN <br />　　　　RETURN(翻译值n) <br /><br />ELSE <br />　　　　RETURN(缺省值) <br />END IF <br /><br />那这个有什么用呢,用处可就大了.比方说 select count(*) from news <br /><br />我们统计NEWS中的新闻条数,如果大于1000 的话就提示大于限制了. <br /><br />这样 select decode(count(*),1000,'己经超出限制',limit) <br /><br />这样limit 输出的就为'己经超出限制'这个字符串. <br /><br />我们还可以用这个判断大小 <br /><br />a=10，变量b=20 <br /><br />则sign(a-b)返回-1，decode解码结果为“变量1”，达到了取较小值的目的。 <br /><br />sign()函数根据某个值是0、正数还是负数，分别返回0、1、-1 <br /><br />decode(sign(a-b),-1,a,b) <br /><br />如果a&lt;b的话,就输出A的值 <br /><br /><br /><img src ="http://www.blogjava.net/balajinima/aggbug/132967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/balajinima/" target="_blank">李云泽</a> 2007-07-28 13:15 <a href="http://www.blogjava.net/balajinima/articles/132967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>