中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
Oracle SQL 內置函數大全
作者:未知 时间:2005-06-18 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无
<<Oracle SQL 內置函數大全>>幻灯片:http://image.chinaitpower.com/files/20050618/11520.rar
  1SQL中的单记录函数
  21.ASCII
  3返回与指定的字符对应的十进制数;
  4SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' 'space from dual;
  5
  6        A         A      ZERO     SPACE
  7--------- --------- --------- ---------
  8       65        97        48        32
  9
 10
 112.CHR
 12给出整数,返回对应的字符;
 13SQL> select chr(54740) zhao,chr(65) chr65 from dual;
 14
 15ZH C
 16-- -
 17赵 A
 18
 193.CONCAT
 20连接两个字符串;
 21SQL> select concat('010-','88888888')||'转23'  高乾竞电话 from dual;
 22
 23高乾竞电话
 24----------------
 25010-88888888转23
 26
 274.INITCAP
 28返回字符串并将字符串的第一个字母变为大写;
 29SQL> select initcap('smith') upp from dual;
 30
 31UPP
 32-----
 33Smith
 34
 35
 365.INSTR(C1,C2,I,J)
 37在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
 38C1    被搜索的字符串
 39C2    希望搜索的字符串
 40I     搜索的开始位置,默认为1
 41J     出现的位置,默认为1
 42SQL> select instr('oracle traning','ra',1,2) instring from dual;
 43
 44 INSTRING
 45---------
 46        9
 47
 48
 496.LENGTH
 50返回字符串的长度;
 51SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;
 52
 53NAME   LENGTH(NAME) ADDR             LENGTH(ADDR)       SAL LENGTH(TO_CHAR(SAL))
 54------ ------------ ---------------- ------------ --------- --------------------
 55高乾竞            3 北京市海锭区                6   9999.99                    7
 56
 57 
 58
 597.LOWER
 60返回字符串,并将所有的字符小写
 61SQL> select lower('AaBbCcDd')AaBbCcDd from dual;
 62
 63AABBCCDD
 64--------
 65aabbccdd
 66
 67
 688.UPPER
 69返回字符串,并将所有的字符大写
 70SQL> select upper('AaBbCcDd'upper from dual;
 71
 72UPPER
 73--------
 74AABBCCDD
 75
 76 
 77
 789.RPAD和LPAD(粘贴字符)
 79RPAD  在列的右边粘贴字符
 80LPAD  在列的左边粘贴字符
 81SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual;
 82
 83LPAD(RPAD('GAO',1
 84-----------------
 85*******gao*******
 86不够字符则用*来填满
 87
 88
 8910.LTRIM和RTRIM
 90LTRIM  删除左边出现的字符串
 91RTRIM  删除右边出现的字符串
 92SQL> select ltrim(rtrim('   gao qian jing   ',' '),' 'from dual;
 93
 94LTRIM(RTRIM('
 95-------------
 96gao qian jing
 97
 98
 9911.SUBSTR(string,start,count)
100取子字符串,从start开始,取count个
101SQL> select substr('13088888888',3,8) from dual;
102
103SUBSTR('
104--------
10508888888
106
107
10812.REPLACE('string','s1','s2')
109string   希望被替换的字符或变量 
110s1       被替换的字符串
111s2       要替换的字符串
112SQL> select replace('he love you','he','i'from dual;
113
114REPLACE('H
115----------
116i love you
117
118
11913.SOUNDEX
120返回一个与给定的字符串读音相同的字符串
121SQL> create table table1(xm varchar(8));
122SQL> insert into table1 values('weather');
123SQL> insert into table1 values('wether');
124SQL> insert into table1 values('gao');
125
126SQL> select xm from table1 where soundex(xm)=soundex('weather');
127
128XM
129--------
130weather
131wether
132
133
13414.TRIM('s' from 'string')
135LEADING   剪掉前面的字符
136TRAILING  剪掉后面的字符
137如果不指定,默认为空格符 
138
13915.ABS
140返回指定值的绝对值
141SQL> select abs(100),abs(-100) from dual;
142
143 ABS(100) ABS(-100)
144--------- ---------
145      100       100
146
147
14816.ACOS
149给出反余弦的值
150SQL> select acos(-1) from dual;
151
152 ACOS(-1)
153---------
1543.1415927
155
156
15717.ASIN
158给出反正弦的值
159SQL> select asin(0.5) from dual;
160
161ASIN(0.5)
162---------
163.52359878
164
165
16618.ATAN
167返回一个数字的反正切值
168SQL> select atan(1) from dual;
169
170  ATAN(1)
171---------
172.78539816
173
174
17519.CEIL
176返回大于或等于给出数字的最小整数
177SQL> select ceil(3.1415927) from dual;
178
179CEIL(3.1415927)
180---------------
181              4
182
183
18420.COS
185返回一个给定数字的余弦
186SQL> select cos(-3.1415927) from dual;
187
188COS(-3.1415927)
189---------------
190             -1
191
192
19321.COSH
194返回一个数字反余弦值
195SQL> select cosh(20) from dual;
196
197 COSH(20)
198---------
199242582598
200
201
20222.EXP
203返回一个数字e的n次方根
204SQL> select exp(2),exp(1) from dual;
205
206   EXP(2)    EXP(1)
207--------- ---------
2087.3890561 2.7182818
209
210
21123.FLOOR
212对给定的数字取整数
213SQL> select floor(2345.67) from dual;
214
215FLOOR(2345.67)
216--------------
217          2345
218
219
22024.LN
221返回一个数字的对数值
222SQL> select ln(1),ln(2),ln(2.7182818) from dual;
223
224    LN(1)     LN(2) LN(2.7182818)
225--------- --------- -------------
226        0 .69314718     .99999999
227
228
22925.LOG(n1,n2)
230返回一个以n1为底n2的对数 
231SQL> select log(2,1),log(2,4) from dual;
232
233 LOG(2,1)  LOG(2,4)
234--------- ---------
235        0         2
236
237
23826.MOD(n1,n2)
239返回一个n1除以n2的余数
240SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;
241
242MOD(10,3)  MOD(3,3)  MOD(2,3)
243--------- --------- ---------
244        1         0         2
245
246
24727.POWER
248返回n1的n2次方根
249SQL> select power(2,10),power(3,3) from dual;
250
251POWER(2,10) POWER(3,3)
252----------- ----------
253       1024         27
254
255
25628.ROUND和TRUNC
257按照指定的精度进行舍入
258SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;
259
260ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)
261----------- ------------ ----------- ------------
262         56          -55          55          -55
263
264
26529.SIGN
266取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
267SQL> select sign(123),sign(-100),sign(0) from dual;
268
269SIGN(123) SIGN(-100)   SIGN(0)
270--------- ---------- ---------
271        1         -1         0
272
273
27430.SIN
275返回一个数字的正弦值
276SQL> select sin(1.57079) from dual;
277
278SIN(1.57079)
279------------
280           1
281
282
28331.SIGH
284返回双曲正弦的值
285SQL> select sin(20),sinh(20) from dual;
286
287  SIN(20)  SINH(20)
288--------- ---------
289.91294525 242582598
290
291
29232.SQRT
293返回数字n的根
294SQL> select sqrt(64),sqrt(10) from dual;
295
296 SQRT(64)  SQRT(10)
297--------- ---------
298        8 3.1622777
299
300
30133.TAN
302返回数字的正切值
303SQL> select tan(20),tan(10) from dual;
304
305  TAN(20)   TAN(10)
306--------- ---------
3072.2371609 .64836083
308
309
31034.TANH
311返回数字n的双曲正切值
312SQL> select tanh(20),tan(20) from dual;
313
314 TANH(20)   TAN(20)
315--------- ---------
316        1 2.2371609
317
318 
319
32035.TRUNC
321按照指定的精度截取一个数
322SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;
323
324   TRUNC1 TRUNC(124.16666,2)
325--------- ------------------
326      100             124.16
327
328 
329
33036.ADD_MONTHS
331增加或减去月份
332SQL> select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;
333
334TO_CHA
335------
336200002
337SQL> select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;
338
339TO_CHA
340------
341199910
342
343
34437.LAST_DAY
345返回日期的最后一天
346SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;
347
348TO_CHAR(SY TO_CHAR((S
349---------- ----------
3502004.05.09 2004.05.10
351SQL> select last_day(sysdate) from dual;
352
353LAST_DAY(S
354----------
35531-5月 -04
356
357
35838.MONTHS_BETWEEN(date2,date1)
359给出date2-date1的月份
360SQL> select months_between('19-12月-1999','19-3月-1999') mon_between from dual;
361
362MON_BETWEEN
363-----------
364          9
365SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;
366
367 MON_BETW
368---------
369      -60
370
371
37239.NEW_TIME(date,'this','that')
373给出在this时区=other时区的日期和时间
374SQL> select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time
375  2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;
376
377BJ_TIME             LOS_ANGLES
378------------------- -------------------
3792004.05.09 11:05:32 2004.05.09 18:05:32
380
381
38240.NEXT_DAY(date,'day')
383给出日期date和星期x之后计算下一个星期的日期
384SQL> select next_day('18-5月-2001','星期五') next_day from dual;
385
386NEXT_DAY
387----------
38825-5月 -01
389
390 
391
39241.SYSDATE
393用来得到系统的当前日期
394SQL> select to_char(sysdate,'dd-mm-yyyy day') from dual;
395
396TO_CHAR(SYSDATE,'
397-----------------
39809-05-2004 星期日
399trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
400SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,
401  2  to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;
402
403HH                  HHMM
404------------------- -------------------
4052004.05.09 11:00:00 2004.05.09 11:17:00
406
407 
408
40942.CHARTOROWID
410将字符数据类型转换为ROWID类型
411SQL> select rowid,rowidtochar(rowid),ename from scott.emp;
412
413ROWID              ROWIDTOCHAR(ROWID) ENAME
414------------------ ------------------ ----------
415AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH
416AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN
417AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD
418AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES
419
420
42143.CONVERT(c,dset,sset)
422将源字符串 sset从一个语言字符集转换到另一个目的dset字符集
423SQL> select convert('strutz','we8hp','f7dec') "conversion" from dual;
424
425conver
426------
427strutz
428
429
43044.HEXTORAW
431将一个十六进制构成的字符串转换为二进制
432
433
43445.RAWTOHEXT
435将一个二进制构成的字符串转换为十六进制
436
437 
438
43946.ROWIDTOCHAR
440将ROWID数据类型转换为字符类型
441
442 
443
44447.TO_CHAR(date,'format')
445SQL> select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss'from dual;
446
447TO_CHAR(SYSDATE,'YY
448-------------------
4492004/05/09 21:14:41
450
451 
452
45348.TO_DATE(string,'format')
454将字符串转化为ORACLE中的一个日期
455
456
45749.TO_MULTI_BYTE
458将字符串中的单字节字符转化为多字节字符
459SQL>  select to_multi_byte('') from dual;
460
461TO
462--
463
464
465
46650.TO_NUMBER
467将给出的字符转换为数字
468SQL> select to_number('1999') year from dual;
469
470     YEAR
471---------
472     1999
473
474
47551.BFILENAME(dir,file)
476指定一个外部二进制文件
477SQL>insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));
478
479
48052.CONVERT('x','desc','source')
481将x字段或变量的源source转换为desc
482SQL> select sid,serial#,username,decode(command,
483  2  0,'none',
484  3  2,'insert',
485  4  3,
486  5  'select',
487  6  6,'update',
488  7  7,'delete',
489  8  8,'drop',
490  9  'other') cmd  from v$session where type!='background';
491
492      SID   SERIAL# USERNAME                       CMD
493--------- --------- ------------------------------ ------
494        1         1                                none
495        2         1                                none
496        3         1                                none
497        4         1                                none
498        5         1                                none
499        6         1                                none
500        7      1275                                none
501        8      1275                                none
502        9        20 GAO                            select
503       10        40 GAO                            none
504
505
50653.DUMP(s,fmt,start,length)
507DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值
508SQL> col global_name for a30
509SQL> col dump_string for a50
510SQL> set lin 200
511SQL> select global_name,dump(global_name,1017,8,5) dump_string from global_name;
512
513GLOBAL_NAME                    DUMP_STRING
514------------------------------ --------------------------------------------------
515ORACLE.WORLD                   Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D
516
517
51854.EMPTY_BLOB()和EMPTY_CLOB()
519这两个函数都是用来对大数据类型字段进行初始化操作的函数
520
521
52255.GREATEST
523返回一组表达式中的最大值,即比较字符的编码大小.
524SQL> select greatest('AA','AB','AC') from dual;
525
526