??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩看看2015永久免费,国产精品在线看,亚洲一区影院http://www.aygfsteel.com/haiing/category/36567.html新的L(fng)zh-cnSun, 14 Dec 2008 13:02:24 GMTSun, 14 Dec 2008 13:02:24 GMT60Oracle常用?qing)非常用函数详?/title><link>http://www.aygfsteel.com/haiing/archive/2008/12/14/246264.html</link><dc:creator>轧钢王子</dc:creator><author>轧钢王子</author><pubDate>Sun, 14 Dec 2008 12:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/haiing/archive/2008/12/14/246264.html</guid><wfw:comment>http://www.aygfsteel.com/haiing/comments/246264.html</wfw:comment><comments>http://www.aygfsteel.com/haiing/archive/2008/12/14/246264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/haiing/comments/commentRss/246264.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/haiing/services/trackbacks/246264.html</trackback:ping><description><![CDATA[转蝲自:(x)http://wangyu.javaeye.com/blog/192292<br /> <div> <p>感于L些网友提Z些非常基的问题,比如有没有实现某某功能的函数啊,某某函数是做什么用的啊Q格式是什么等{,同时也感受到自己对oracle函数认识的不I于是集中月余旉专注于oracle函数Q小有心(j)得不敢私藏,发之与诸公共享?<br /> <br /> 本文q不准备介绍全部的oracle函数Q当前情势下Q俺也还没这个时_(d)需要学?fn)的东西太多了(jin),要把多数旉花在学?fn)l常能用上的技术方?)Q所以如果是准备深入?jin)解所有oracle函数的朋友,q是d注:(x)Oracle SQL Reference官方文档更靠׃些?<br /> <br /> 本文更多会(x)介绍三思在日常中经怼(x)用到的,或者虽然很用刎ͼ但是感觉挺有意思的一些函数。分二类介绍Q分别是Q?<br /> 著名函数 Q经常用到的函数 <br /> 非著名函数篇Q即虽然很少用到Q但某些情况下却很实?<br /> <br /> 注:(x)N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略Qfmt表示格式?<br /> <br /> 单值函数在查询中返回单个|可被应用到selectQwhere子句Qstart with以及(qing)connect by 子句和having子句?<br /> (一).数值型函数(Number Functions) <br /> 数值型函数输入数字型参数ƈq回数值型的倹{多数该cd数的q回值支?8位小数点Q诸如:(x)COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支持36位小数点。ACOS, ASIN, ATAN, and ATAN2支持30位小数点?<br /> <br /> 1、MOD(n1,n2) q回n1除n2的余敎ͼ如果n2=0则返回n1的倹{?<br />     例如QSELECT MOD(24,5) FROM DUAL; <br /> <br /> 2? ROUND(n1[,n2]) q回四舍五入数点右边n2位后n1的|n2~省gؓ(f)0Q如果n2数就舍入到小数点左边相应的位?虽然oracle documents上提到n2的值必Mؓ(f)整数Q事实上执行时此处的判断q不严}Q即使n2为非整数Q它也会(x)自动n2取整后做处理Q但是我文档中其它提到必Mؓ(f)整的地方需要特别注意,如果不ؓ(f)整执行时?x)报错??<br /> 例如QSELECT ROUND(23.56),ROUND(23.56,1),ROUND(23.56,-1) FROM DUAL; <br /> <br /> 3、TRUNC(n1[,n2] q回截尾到n2位小数的n1的|n2~省讄?Q当n2为缺省设|时?x)将n1截尾为整敎ͼ如果n2|截֜数点左边相应的位上?<br /> 例如QSELECT TRUNC(23.56),TRUNC(23.56,1),TRUNC(23.56,-1) FROM DUAL; </p> <p>(?.字符型函数返回字W?Character Functions Returning Character Values) <br /> 该类函数q回与输入类型相同的cd?<br /> q回的CHARcd值长度不过2000字节Q?<br /> q回的VCHAR2cd值长度不过4000字节Q?<br /> 如果上述应返回的字符长度出Qoracleq不?x)报错而是直接截断x大可支持长度q回?<br /> <br /> q回的CLOBcd值长度不过4GQ?<br /> 对于CLOBcd的函敎ͼ如果q回值长度超出,oracle不会(x)q回M错误而是直接抛出错误?<br /> <br /> 1、LOWER(c) 指定字W串内字W变为小写,支持CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOBcd <br />     例如QSELECT LOWER('WhaT is tHis') FROM DUAL; <br /> <br /> 2、UPPER(c) 指定字W串内字W变为大写,支持CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB,NCLOBcd <br />     例如QSELECT UPPER('WhaT is tHis') FROM DUAL; <br /> <br /> 3、LPAD(c1,n[,c2]) q回指定长度=n的字W串Q需要注意的有几点:(x) <br /> 如果n<c1.length则从叛_左截取指定长度返回; <br /> 如果n>c1.length and c2 is nullQ以I格从左向右补充字符长度至nq返回; <br /> 如果n>c1.length and c2 is not nullQ以指定字符c2从左向右补充c1长度至nq返回; <br /> 例如QSELECT LPAD('WhaT is tHis',5),LPAD('WhaT is tHis',25),LPAD('WhaT is tHis',25,'-') FROM DUAL; <br /> 最后大家再猜一猜,如果n<0Q结果会(x)怎么?<br /> <br /> 4、RPAD(c1,n[,c2]) q回指定长度=n的字W串Q基本与上同Q不q补充字W是从右向左方向正好与上相反Q?<br />     例如QSELECT RPAD('WhaT is tHis',5),RPAD('WhaT is tHis',25),RPAD('WhaT is tHis',25,'-') FROM DUAL; <br /> <br /> 5、TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1) 哈哈Q被俺无敌的形容方式搞晕头了(jin)吧,q个地方q是看图更明?jin)一些?<br /> 看v来很复杂Q理解v来很单:(x) <br /> 如果没有指定M参数则oracle去除c1头尾I格 <br /> 例如QSELECT TRIM(' WhaT is tHis ') FROM DUAL; <br /> 如果指定?jin)c2参数Q则oracleLc1头尾c2(q个l致试Q有多种不同情Ş的哟) <br /> 例如QSELECT TRIM('W' FROM 'WhaT is tHis w W') FROM DUAL; <br /> 如果指定?jin)leading参数则会(x)Lc1头部c2 <br /> 例如QSELECT TRIM(leading 'W' FROM 'WhaT is tHis w W') FROM DUAL; <br /> 如果指定?jin)trailing参数则会(x)Lc1Nc2 <br /> 例如QSELECT TRIM(trailing 'W' FROM 'WhaT is tHis w W') FROM DUAL; <br /> 如果指定?jin)both参数则会(x)Lc1头尾c2(跟不指定有区别吗Q没区别Q? <br /> 例如QSELECT TRIM(both 'W' FROM 'WhaT is tHis w W') FROM DUAL; <br /> 注意Qc2长度=1 <br /> <br /> 6、LTRIM(c1[,c2]) 千万表以Z上面那个长的像,功能也与上面的类|本函数是从字W串c1左侧截取掉与指定字符串c2相同的字Wƈq回。如果c2为空则默认截取空根{?<br /> 例如QSELECT LTRIM('WWhhhhhaT is tHis w W','Wh') FROM DUAL; <br /> <br /> 7、RTRIM(c1,c2)与上同,不过方向相反 <br />     例如QSELECT RTRIM('WWhhhhhaT is tHis w W','W w') FROM DUAL; <br /> <br /> 8、REPLACE(c1,c2[,c3]) c1字符串中的c2替换为c3Q如果c3为空Q则从c1中删除所有c2?<br />     例如QSELECT REPLACE('WWhhhhhaT is tHis w W','W','-') FROM DUAL; <br /> <br /> 9、SOUNDEX(c) 奇的函数啊Q该函数q回字符串参数的语音表示形式Q对于比较一些读音相同,但是拼写不同的单词非常有用。计语音的法如下Q?<br /> 保留字符串首字母Q但删除a、e、h、i、o、w、y?<br /> 下表中的数字赋l相对应的字母:(x) <br /> 1Qb、f、p、v <br /> 2Qc、g、k、q、s、x、z <br /> 3Qd、t <br /> 4Ql <br /> 5Qm、n <br /> 6QR <br /> 如果字符串中存在拥有相同数字?个以上(包含2个)(j)的字母在一P例如b和fQ,或者只有h或wQ则删除其他的,只保?个; <br /> 只返回前4个字节,不够?填充 <br /> 例如QSELECT SOUNDEX('dog'),soundex('boy') FROM DUAL; <br /> <br /> 10、SUBSTR(c1,n1[,n2]) 截取指定长度的字W串。稍不注意就可能充满?jin)陷q函数?<br /> n1=开始长度; <br /> n2=截取的字W串长度Q如果ؓ(f)I,默认截取到字W串l尾Q?<br /> ?如果n1=0 then n1=1 <br /> ?如果n1>0Q则oracle从左向右认起始位置截取 <br /> 例如QSELECT SUBSTR('What is this',5,3) FROM DUAL; <br /> ?如果n1<0Q则oracle从右向左数确认v始位|?<br /> 例如QSELECT SUBSTR('What is this',-5,3) FROM DUAL; <br /> ?如果n1>c1.length则返回空 <br /> 例如QSELECT SUBSTR('What is this',50,3) FROM DUAL; <br /> 然后再请你猜猜,如果n2<1Q会(x)如何q回值呢 <br /> <br /> 11? TRANSLATE(c1,c2,c3) 功能而言Q此函数与replace有些怼。但需要注意的一Ҏ(gu)Qtranslate是绝对匹配替换,q点与replace函数h非常大区别。什么是l对匚w替换呢?单的_(d)是将字符串c1中按一定的格式c2替换为c3。如果文字Ş容仍然无法理解,我们通过几具实例来说明:(x) <br /> 例如Q?<br /> SELECT TRANSLATE('What is this','','-') FROM DUAL; <br /> SELECT TRANSLATE('What is this','-','') FROM DUAL; <br /> l果都是I。来试试q个Q?<br /> SELECT TRANSLATE('What is this',' ',' ') FROM DUAL; <br /> 再来看这个:(x) <br /> SELECT TRANSLATE('What is this','ait','-*') FROM DUAL; <br /> 是否明白?jin)点呢?Replace函数理解比较单,它是字W串中指定字W替换成其它字符Q它的字W必Lq箋的。而translate中,则是指定字符? c1中出现的c2Q将c2中各个字W替换成c3中位|顺序与其相同的c3中的字符。明白了(jin)QReplace是替换,而translate则像是过?/p> <p>(?.字符型函数返回数字?Character Functions Returning Number Values) <br /> 本类函数支持所有的数据cd <br /> <br /> 1、INSTR(c1,c2[,n1[,n2]]) q回c2在c1中位|?<br /> c1:原字W串 <br /> c2:要寻扄字符?<br /> n1:查询起始位置Q正DCZ左到叻I负DCZ叛_?(大小表示位置,比如3表示左面W?处开?-3表示右面W?处开?。黑黑,如果?的话Q则q回的也? <br /> n2:W几个匹配项。大? <br /> 例如QSELECT INSTR('abcdefg','e',-3) FROM DUAL; <br /> <br /> 2、LENGTH(c) q回指定字符串的长度。如?<br /> 例如QSELECT LENGTH('A123?) FROM DUAL; <br /> 猜猜SELECT LENGTH('') FROM DUAL;的返回值是什?<br /> <br /> (?.日期函数(Datetime Functions) <br /> 本类函数中,除months_betweenq回数值外Q其它都返回日期?<br /> <br /> 1、ADD_MONTHS() q回指定日期月䆾+n之后的|n可以ZQ何整数?<br /> 例如QSELECT ADD_MONTHS(sysdate,12),ADD_MONTHS(sysdate,-12) FROM DUAL; <br /> <br /> 2、CURRENT_DATE q回当前session所在时区的默认旉 <br /> 例如Q?<br /> SQL> alter session set nls_date_format = 'mm-dd-yyyy' ; <br /> SQL> select current_date from dual; <br /> <br /> 3? SYSDATE 功能与上相同Q返回当前session所在时区的默认旉。但是需要注意的一Ҏ(gu)Q如果同时用sysdate与current_date获得的时间不一 定相同,某些情况下current_date?x)比sysdate快一U。经q与xyf_tck(兄台的大作ORACLE的工作机制写的很好,深入出)? 短暂交流Q我们认为current_date是将current_timestamp中毫U四舍五入后的返回,虽然没有扑ֈ文档支持Q但是想来应该八?ji)? d。同Ӟ仅是某些情况下会(x)有一U的误差Q一般情况下q不?x)对你的操作造成影响Q所以了(jin)解即可?<br /> 例如QSELECT SYSDATE,CURRENT_DATE FROM DUAL; <br /> <br /> 4、LAST_DAY(d) q回指定旉所在月的最后一?<br /> 例如QSELECT last_day(SYSDATE) FROM DUAL; <br /> <br /> 5、NEXT_DAY(d,n) q回指定日期后第一个n的日期,nZ周中的某一天。但是,需要注意的是n如果为字W的话,它的星期形式需要与当前session默认时区中的星期形式相同?<br /> 例如Q三思用的中文ntQnls_languagegؓ(f)SIMPLIFIED CHINESE <br /> SELECT NEXT_DAY(SYSDATE,5) FROM DUAL; <br /> SELECT NEXT_DAY(SYSDATE,'星期?) FROM DUAL; <br /> 两种方式都可以取到正的q回Q但是:(x) <br /> SELECT NEXT_DAY(SYSDATE,'Thursday') FROM DUAL; <br /> 则会(x)执行出错Q提供你说周中的日无效,是q个原因?jin)?<br /> <br /> 6、MONTHS_BETWEEN(d1,d2) q回d1与d2间的月䆾差,视d1,d2的值大,l果可正可负Q当然也有可能ؓ(f)0 <br /> 例如Q?<br /> SELECT months_between(SYSDATE, sysdate), <br /> months_between(SYSDATE, add_months(sysdate, -1)), <br /> months_between(SYSDATE, add_months(sysdate, 1)) <br /> FROM DUAL; <br /> <br /> 7、ROUND(d[,fmt]) 前面讲数值型函数的时候介l过ROUNDQ此处与上功能基本相|不过此处操作的是日期。如果不指定fmt参数Q则默认q回距离指定日期最q的日期?<br /> 例如QSELECT ROUND(SYSDATE,'HH24') FROM DUAL; <br /> <br /> 8、TRUNC(d[,fmt]) 与前面介l的数值型TRUNC原理相同Q不q此处也是操作的日期型?<br /> 例如QSELECT TRUNC(SYSDATE,'HH24') FROM DUAL; <br /> <br /> (?.转换函数(Conversion Functions) <br /> 转换函数指定字W从一U类型{换ؓ(f)另一U,通常q类函数遵@如下惯例Q函数名U后面跟着待{换类型以?qing)输出类型?<br /> <br /> 1、TO_CHAR() 本函数又可以分三类Q分别是 <br /> 转换字符->字符TO_CHAR(c)Q将nchar,nvarchar2,clob,nclobcd转换为charcdQ?<br /> 例如QSELECT TO_CHAR('AABBCC') FROM DUAL; <br /> <br /> 转换旉->字符TO_CHAR(d[,fmt])Q将指定的时?data,timestamp,timestamp with time zone)按照指定格式转换为varchar2cdQ?<br /> 例如QSELECT TO_CHAR(sysdate,'yyyy-mm-dd hh24:mi:ss') FROM DUAL; <br /> <br /> 转换数?>字符TO_CHAR(n[,fmt])Q将指定数值n按照指定格式fmt转换为varchar2cdq返回; <br /> 例如QSELECT TO_CHAR(-100, 'L99G999D99MI') FROM DUAL; <br /> <br /> 2? TO_DATE(c[,fmt[,nls]]) char,nchar,varchar2,nvarchar2转换为日期类型,如果fmt参数不ؓ(f)I,则按照fmt中指定格式进行{换。注意这里的 fmt参数。如果ftm?J'则表C按照公元制(Julian day)转换Qc则必Mؓ(f)大于0q小?373484的正整数?<br /> 例如Q?<br /> SELECT TO_DATE(2454336, 'J') FROM DUAL; <br /> SELECT TO_DATE('2007-8-23 23:25:00', 'yyyy-mm-dd hh24:mi:ss') FROM DUAL; <br /> <br /> Z么公元制的话Qc的值必M大于5373484呢?因ؓ(f)Oracle的DATEcd的取D围是公元?712q??日至公元9999q?2?1日。看看下面这个语句:(x) <br /> SELECT TO_CHAR(TO_DATE('9999-12-31','yyyy-mm-dd'),'j') FROM DUAL; <br /> <br /> 3、TO_NUMBER(c[,fmt[,nls]]) char,nchar,varchar2,nvarchar2型字串按照fmt中指定格式{换ؓ(f)数值类型ƈq回?<br /> 例如QSELECT TO_NUMBER('-100.00', '9G999D99') FROM DUAL; <br /> <br /> (?.其它辅助函数(Miscellaneous Single-Row Functions) <br /> <br /> 1、DECODE(exp,s1,r1,s2,r2..s,r[,def]) 可以把它理解成一个增强型的if elseQ只不过它ƈ不通过多行语句Q而是在一个函数内实现if else的功能?<br /> exp做ؓ(f)初始参数。s做ؓ(f)Ҏ(gu)|相同则返回rQ如果s有多个,则持l遍历所有sQ直到某个条件ؓ(f)真ؓ(f)止,否则q回默认值def(如果指定?jin)的?Q如果没有默认|q且前面的对比也都没有ؓ(f)真,则返回空?<br /> 毫无疑问Qdecode是个非常重要的函敎ͼ在实现行转列{功能时都会(x)用到Q需要牢记和熟练使用?<br /> <br /> 例如Qselect decode('a2','a1','true1','a2','true2','default') from dual; <br /> <br /> 2、GREATEST(n1,n2,...n) q回序列中的最大?<br /> 例如QSELECT GREATEST(15,5,75,8) "Greatest" FROM DUAL; <br /> <br /> 3、LEAST(n1,n2....n) q回序列中的最?<br /> 例如QSELECT LEAST(15,5,75,8) LEAST FROM DUAL; <br /> <br /> 4、NULLIF(c1,c2) <br /> Nullif也是个很有意思的函数。逻辑{h(hun)于:(x)CASE WHEN c1 = c2 THEN NULL ELSE c1 END <br /> 例如QSELECT NULLIF('a','b'),NULLIF('a','a') FROM DUAL; <br /> <br /> 5、NVL(c1,c2) 逻辑{h(hun)于IF c1 is null THEN c2 ELSE c1 END。c1,c2可以是Q何类型。如果两者类型不同,则oracle?x)自动将c2转换为c1的类型?<br /> 例如QSELECT NVL(null, '12') FROM DUAL; <br /> <br /> 6、NVL2(c1,c2,c3) 大家可能都用到nvlQ但你用qnvl2吗?如果c1非空则返回c2,如果c1为空则返回c3 <br /> 例如Qselect nvl2('a', 'b', 'c') isNull,nvl2(null, 'b', 'c') isNotNull from dual; <br /> <br /> 7、SYS_CONNECT_BY_PATH(col,c) 该函数只能应用于?wi)状查询。返回通过c1q接的从根到节点的\径。该函数必须与connect by 子句共同使用?<br /> 例如Q?<br /> create table tmp3( <br /> rootcol varchar2(10), <br /> nodecol varchar2(10) <br /> ); <br /> <br /> insert into tmp3 values ('','a001'); <br /> insert into tmp3 values ('','b001'); <br /> insert into tmp3 values ('a001','a002'); <br /> insert into tmp3 values ('a002','a004'); <br /> insert into tmp3 values ('a001','a003'); <br /> insert into tmp3 values ('a003','a005'); <br /> insert into tmp3 values ('a005','a008'); <br /> insert into tmp3 values ('b001','b003'); <br /> insert into tmp3 values ('b003','b005'); <br /> <br /> select lpad(' ', level*10,'=') ||'>'|| sys_connect_by_path(nodecol,'/') <br /> from tmp3 <br /> start with rootcol = 'a001' <br /> connect by prior nodecol =rootcol; <br /> <br /> 8、SYS_CONTEXT(c1,c2[,n]) 指定命名空间c1的指定参数c2的值按照指定长度n截取后返回?<br /> Oracle9i提供内置?jin)一个命名空间USERENVQ描qC(jin)当前session的各信息,其拥有下列参敎ͼ(x) <br /> ?CURRENT_SCHEMA:当前模式名; <br /> ?CURRENT_USER:当前用户Q?<br /> ?IP_ADDRESS:当前客户端IP地址Q?<br /> ?OS_USER:当前客户?a title="操作pȝ" target="_blank" style="color: #000000;">操作pȝ</a>用户Q?<br /> {等数十,更详l的参数列还请大家直接参考Oracle Online Documents <br /> <br /> 例如QSELECT SYS_CONTEXT('USERENV', 'SESSION_USER') FROM DUAL; <br /> 注:(x)N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略Qfmt表示格式?<br /> <br /> 单值函数在查询中返回单个|可被应用到selectQwhere子句Qstart with以及(qing)connect by 子句和having子句?<br /> (一).数值型函数(Number Functions) <br /> ? 值型函数输入数字型参数ƈq回数值型的倹{多数该cd数的q回值支?8位小数点Q诸如:(x)COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH 支持36位小数点。ACOS, ASIN, ATAN, and ATAN2支持30位小数点? <br /> <br /> 1、ABS(n) q回数字的绝对?<br /> 例如QSELECT ABS(-1000000.01) FROM DUAL; <br /> <br /> 2、COS(n) q回n的余弦?<br /> 例如QSELECT COS(-2) FROM DUAL; <br /> <br /> 3、ACOS(n) 反余弦函敎ͼn between -1 and 1Q返回值between 0 and pi?<br /> 例如QSELECT ACOS(0.9) FROM DUAL; <br /> <br /> 4、BITAND(n1,n2) 位与q算Q这个太有意思了(jin)Q虽然没惛_可能用到哪里Q详l说明一下:(x) <br /> 假设3,9做位与运,3的二q制形式为:(x)0011Q?的二q制形式为:(x)1001Q则l果?001Q{换成10q制Cؓ(f)1?<br /> 例如QSELECT BITAND(3,9) FROM DUAL; <br /> <br /> 5、CEIL(n) q回大于或等于n的最的整数?<br /> 例如QSELECT ceil(18.2) FROM DUAL; <br /> 考你一下,猜猜ceil(-18.2)的g(x)是什么呢 <br /> <br /> 6、FLOOR(n) q回于{于n的最大整数?<br /> 例如QSELECT FLOOR(2.2) FROM DUAL; <br /> 再猜猜floor(-2.2)的g(x)是什么呢 <br /> <br /> 7、BIN_TO_NUM(n1,n2,....n) 二进制{向十q制 <br /> 例如QSELECT BIN_TO_NUM(1),BIN_TO_NUM(1,0),BIN_TO_NUM(1,1) FROM DUAL; <br /> <br /> 8、SIN(n) q回n的正玄?n为弧度?<br /> 例如QSELECT SIN(10) FROM DUAL; <br /> <br /> 9、SINH(n) q回n的双曲正玄?n为弧度?<br /> 例如QSELECT SINH(10) FROM DUAL; <br /> <br /> 10、ASIN(n) 反正玄函敎ͼn between -1 and 1Q返回值between pi/2 and -pi/2?<br /> 例如QSELECT ASIN(0.8) FROM DUAL; <br /> <br /> 11、TAN(n) q回n的正切?n为弧?<br /> 例如QSELECT TAN(0.8) FROM DUAL; <br /> <br /> 12、TANH(n) q回n的双曲正切?n为弧?<br /> 例如QSELECT TANH(0.8) FROM DUAL; <br /> <br /> 13、ATAN(n) 反正切函敎ͼn表示弧度Q返回值between pi/2 and -pi/2?<br /> 例如QSELECT ATAN(-444444.9999999) FROM DUAL; <br /> <br /> 14、EXP(n) q回e的nơ幂Qe = 2.71828183 ... <br /> 例如QSELECT EXP(3) FROM DUAL; <br /> <br /> 15、LN(n) q回n的自然对敎ͼn>0 <br /> 例如QSELECT LN(0.9) FROM DUAL; <br /> <br /> 16、LOG(n1,n2) q回以n1为底n2的对敎ͼn1 >0 and not 1 Qn2>0 <br /> 例如QSELECT LOG(1.1,2.2) FROM DUAL; <br /> <br /> 17、POWER(n1,n2) q回n1的n2ơ方。n1,n2可以ZQ意数|不过如果m是负敎ͼ则n必须为整?<br /> 例如QSELECT POWER(2.2,2.2) FROM DUAL; <br /> <br /> 18、SIGN(n) 如果n<0q回-1,如果n>0q回1Q如果n=0q回0. <br /> 例如QSELECT SIGN(14),SIGN(-14),SIGN(0) FROM DUAL; <br /> <br /> 19、SQRT(n) q回n的^Ҏ(gu),n为弧度。n>=0 <br /> 例如QSELECT SQRT(0.1) FROM DUAL; <br /> <br /> (?.字符型函数返回字W?Character Functions Returning Character Values) <br /> 该类函数q回与输入类型相同的cd?<br /> ?q回的CHARcd值长度不过2000字节Q?<br /> ?q回的VCHAR2cd值长度不过4000字节Q?<br /> 如果上述应返回的字符长度出Qoracleq不?x)报错而是直接截断x大可支持长度q回?<br /> <br /> ?q回的CLOBcd值长度不过4GQ?<br /> 对于CLOBcd的函敎ͼ如果q回值长度超出,oracle不会(x)q回M错误而是直接抛出错误?<br /> <br /> 1、CHR(N[ USING NCHAR_CS]) q回指定数值在当前字符集中对应的字W?<br /> 例如QSELECT CHR(95) FROM DUAL; <br /> <br /> 2、CONCAT(c1,c2) q接字符Ԍ{同于|| <br /> 例如QSELECT concat('aa','bb') FROM DUAL; <br /> <br /> 3、INITCAP(c) 字W串中单词的W一个字母{换ؓ(f)大写Q其它则转换为小?<br /> 例如QSELECT INITCAP('whaT is this') FROM DUAL; <br /> <br /> 4、NLS_INITCAP(c) q回指定字符Ԍq将字符串中W一个字母变大写Q其它字母变写 <br /> 例如QSELECT NLS_INITCAP('中华miNZHu') FROM DUAL; <br /> 它还h一个参敎ͼ(x)Nlsparam用来指定排序规则Q可以忽略,默认状态该参数为当前session的排序规则?<br /> <br /> (?.字符型函数返回数字?Character Functions Returning Number Values) <br /> 本类函数支持所有的数据cd <br /> 1、ASCII(c) 与chr函数的用途刚刚相反,本函数返回指定字W在当前字符集下对应的数倹{?<br /> 例如QSELECT ASCII('_') FROM DUAL; <br /> <br /> (?.日期函数(Datetime Functions) <br /> 本类函数中,除months_betweenq回数值外Q其它都返回日期?<br /> 1、CURRENT_TIMESTAMP([n]) q回当前session所在时区的日期和时间。n表示毫秒U的_ֺQ不大于6 <br /> 例如QSELECT CURRENT_TIMESTAMP(3) FROM DUAL; <br /> <br /> 2、LOCALTIMESTAMP([n]) 与上同,q回当前session所在时区的日期和时间。n表示毫秒U的_ֺQ不大于6 <br /> 例如QSELECT LOCALTIMESTAMP(3) FROM DUAL; <br /> <br /> 3、SYSTIMESTAMP([n]) 与上同,q回当前数据库所在时区的日期和时_(d)n表示毫秒U的_ֺQ?gt;0 and <6 <br /> 例如QSELECT SYSTIMESTAMP(4) FROM DUAL; <br /> <br /> 4、DBTIMEZONE q回数据库的当前时区 <br /> 例如QSELECT DBTIMEZONE FROM DUAL; <br /> <br /> 5、SESSIONTIMEZONE q回当前session所在时?<br /> 例如QSELECT SESSIONTIMEZONE FROM DUAL; <br /> <br /> 6、EXTRACT(key from date) key=(year,month,day,hour,minute,second) 从指定时间提到指定日期列 <br /> 例如QSELECT EXTRACT(year from sysdate) FROM DUAL; <br /> <br /> 7、TO_TIMESTAMP(c1[,fmt]) 指定字W按指定格式转换为timestamp格式?<br /> 例如QSELECT TO_TIMESTAMP('2007-8-22', 'YYYY-MM-DD HH:MI:SS') FROM DUAL; <br /> <br /> (?.转换函数(Conversion Functions) <br /> 转换函数指定字W从一U类型{换ؓ(f)另一U,通常q类函数遵@如下惯例Q函数名U后面跟着待{换类型以?qing)输出类型?<br /> <br /> 1、BIN_TO_NUM(n1,n2...n) 一l位向量转换为等L(fng)十进制Ş式?<br /> 例如QSELECT BIN_TO_NUM(1,1,0) FROM DUAL; <br /> <br /> 2、CAST(c as newtype) 指定字串{换ؓ(f)指定cdQ基本只对字W类型有效,比如char,number,date,rowid{。此c{换有一个专门的表列明了(jin)哪种cd可以转换为哪U类型,此处׃作酹q?<br /> 例如QSELECT CAST('1101' AS NUMBER(5)) FROM DUAL; <br /> <br /> 3、CHARTOROWID(c) 字W串转换为rowidcd <br /> 例如QSELECT CHARTOROWID('A003D1ABBEFAABSAA0') FROM DUAL; <br /> <br /> 4、ROWIDTOCHAR(rowid) 转换rowidgؓ(f)varchar2cd。返回串长度?8个字节?<br /> 例如QSELECT ROWIDTOCHAR(rowid) FROM DUAL; <br /> <br /> 5、TO_MULTI_BYTE(c) 指定字W{换ؓ(f)全角q返回charcd字串 <br /> 例如QSELECT TO_MULTI_BYTE('ABC abc 中华') FROM DUAL; <br /> <br /> 6、TO_SINGLE_BYTE(c) 指定字W{换ؓ(f)半角q返回charcd字串 <br /> 例如QSELECT TO_SINGLE_BYTE('QQ abc中?) FROM DUAL; <br /> <br /> (?.其它辅助函数(Miscellaneous Single-Row Functions) <br /> 1、COALESCE(n1,n2,....n) q回序列中的W一个非I?<br /> 例如QSELECT COALESCE(null,5,6,null,9) FROM DUAL; <br /> <br /> 2、DUMP(exp[,fmt[,start[,length]]]) <br />     dump是个功能非常强?zhn)的函敎ͼ对于深入了(jin)解oracle<span style="color: #000000;">存储</span>的h而言相当有用。所以对于我们这些仅仅只是应用的言׃知道能将其应用于何处?jin)。此处仅介绍用法Q不对其功能做深入分析?br /> <br />     如上所C,dump拥有不少参数。其本质是以指定格式Q返回指定长度的exp的内部表CŞ式的varchar2倹{fmt?U格 式:(x)8||10||16||17Q分别表C?q制Q?0q制Q?6q制和单字符Q默认ؓ(f)10q制。start参数表示开始位|,length表示?分隔 的字串数?<br /> 例如QSELECT DUMP('abcdefg',17,2,4) FROM DUAL; <br /> <br /> 3、EMPTY_BLOB,EMPTY_CLOB q两个函数都是返回空lobcdQ通常被用于insert和update{语句以初始化lob列,或者将其置为空。EMPTY表示LOB已经被初始化Q只不过q没有用来存储数据?<br /> <br /> 4、NLS_CHARSET_NAME(n) q回指定数值对应的字符集名U?<br /> 例如QSELECT NLS_CHARSET_NAME(1) FROM DUAL; <br /> <br /> 5、NLS_CHARSET_ID(c) q回指定字符对应的字W集id?<br /> 例如QSELECT NLS_CHARSET_ID('US7ASCII') FROM DUAL; <br /> <br /> 6、NLS_CHARSET_DECL_LEN(n1,n2) q回一个NCHAR值的声明宽度(以字Wؓ(f)单位).n1是该g字节为单位的长度Qn2是该值的字符集ID <br /> 例如QSELECT NLS_CHARSET_DECL_LEN(100, nls_charset_id('US7ASCII')) FROM DUAL; <br /> <br /> 7、SYS_EXTRACT_UTC(timestamp) q回标准通用旉x林威L间?<br /> 例如QSELECT SYS_EXTRACT_UTC(current_timestamp) FROM DUAL; <br /> <br /> 8、SYS_TYPEID(object_type) q回对象cd对应的id?<br /> 例如Q这个这个,没有建立q自定义对象Q咋做示例? <br /> <br /> 9、UID q回一个唯一标识当前数据库用L(fng)整数?<br /> 例如QSELECT UID FROM DUAL; <br /> <br /> 10、USER q回当前session用户 <br /> 例如QSELECT USER FROM DUAL; <br /> <br /> 11、USERENV(c) 该函数用来返回当前session的信息,据oracle文档的说明,userenv是ؓ(f)?jin)保持向下兼容的遗留函数。oracle公司推荐你用sys_context函数调用USERENV命名I间来获取相关信息,所以大家了(jin)解下p?jin)?<br /> 例如QSELECT USERENV('LANGUAGE') FROM DUAL; <br /> <br /> 12、VSIZE(c) q回c的字节数?<br /> 例如QSELECT VSIZE('abc中华') FROM DUAL;</p> </div> <br /> <img src ="http://www.aygfsteel.com/haiing/aggbug/246264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/haiing/" target="_blank">轧钢王子</a> 2008-12-14 20:12 <a href="http://www.aygfsteel.com/haiing/archive/2008/12/14/246264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>literal does not match format stringhttp://www.aygfsteel.com/haiing/archive/2008/12/14/246261.html轧钢王子轧钢王子Sun, 14 Dec 2008 11:44:00 GMThttp://www.aygfsteel.com/haiing/archive/2008/12/14/246261.htmlhttp://www.aygfsteel.com/haiing/comments/246261.htmlhttp://www.aygfsteel.com/haiing/archive/2008/12/14/246261.html#Feedback0http://www.aygfsteel.com/haiing/comments/commentRss/246261.htmlhttp://www.aygfsteel.com/haiing/services/trackbacks/246261.html

轧钢王子 2008-12-14 19:44 发表评论
]]>
Oracle数据库中null的用详?/title><link>http://www.aygfsteel.com/haiing/archive/2008/12/14/246257.html</link><dc:creator>轧钢王子</dc:creator><author>轧钢王子</author><pubDate>Sun, 14 Dec 2008 11:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/haiing/archive/2008/12/14/246257.html</guid><wfw:comment>http://www.aygfsteel.com/haiing/comments/246257.html</wfw:comment><comments>http://www.aygfsteel.com/haiing/archive/2008/12/14/246257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/haiing/comments/commentRss/246257.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/haiing/services/trackbacks/246257.html</trackback:ping><description><![CDATA[     摘要: Oracle中的NULL既是一个难点也是一个重点,如何理解它,以及(qing)如何处理它,都关pd我们查询l果的正性?nbsp; <a href='http://www.aygfsteel.com/haiing/archive/2008/12/14/246257.html'>阅读全文</a><img src ="http://www.aygfsteel.com/haiing/aggbug/246257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/haiing/" target="_blank">轧钢王子</a> 2008-12-14 19:35 <a href="http://www.aygfsteel.com/haiing/archive/2008/12/14/246257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中Decode()函数 使用技?/title><link>http://www.aygfsteel.com/haiing/archive/2008/12/09/245334.html</link><dc:creator>轧钢王子</dc:creator><author>轧钢王子</author><pubDate>Tue, 09 Dec 2008 13:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/haiing/archive/2008/12/09/245334.html</guid><wfw:comment>http://www.aygfsteel.com/haiing/comments/245334.html</wfw:comment><comments>http://www.aygfsteel.com/haiing/archive/2008/12/09/245334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/haiing/comments/commentRss/245334.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/haiing/services/trackbacks/245334.html</trackback:ping><description><![CDATA[<span style="font-size: 14pt;"><span style="font-family: 宋体;">decode(条g,?,译?,?,译?,...值n,译值n,~省?<br /> 该函数的含义如下Q?br /> IF 条g=? THEN<br /> RETURN(译?)<br /> ELSIF 条g=? THEN<br /> RETURN(译?)<br /> ......<br /> ELSIF 条g=值n THEN<br /> RETURN(译值n)<br /> ELSE<br /> RETURN(~省?<br /> END IF<br /> · 使用Ҏ(gu)Q?br /> 1、比较大?br /> select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较?yu)?br /> sign()函数Ҏ(gu)某个值是0、正数还是负敎ͼ分别q回0??1<br /> 例如Q?br /> 变量1=10Q变?=20<br /> 则sign(变量1-变量2)q回-1Qdecode解码l果?#8220;变量1”Q达C(jin)取较?yu)值的目的?br /> <br /> <br /> 下面的例子说明了(jin)Q如何读取用户CHECKUP表SEAPARK中的BLOOD_TEST_FLAG列下的项目,作ؓ(f)DECODE函数的实参支持倹{? <br /> SELECT checkup_type, <br /> DECODE(blood_test_flag,’Y’,’Yes’,’N’,’No’,NULL,’None’,’Invalid’) <br /> FROM checkup;</span></span> <img src ="http://www.aygfsteel.com/haiing/aggbug/245334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/haiing/" target="_blank">轧钢王子</a> 2008-12-09 21:06 <a href="http://www.aygfsteel.com/haiing/archive/2008/12/09/245334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ͻȪ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ׯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">°</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ګ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ֿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">߰</a>| <a href="http://" target="_blank">³ľ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>