Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287831
  • 博文数量: 72
  • 博客积分: 2387
  • 博客等级: 大尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 10:54
文章分类

全部博文(72)

文章存档

2012年(1)

2011年(1)

2010年(70)

分类: Oracle

2010-08-26 12:23:00

几个常用函数及应用实例:  
   
   
                       
  SQL中的单记录函数  
  1.ASCII  
  返回与指定的字符对应的十进制数;  
  SQL>   select   ascii('A')   A,ascii('a')   a,ascii('0')   zero,ascii('   ')   space   from   dual;    
  A   A   ZERO   SPACE  
  ---------   ---------   ---------   ---------  
  65   97   48   32  
  2.CHR  
  给出整数,返回对应的字符;  
  SQL>   select   chr(54740)   zhao,chr(65)   chr65   from   dual;  
  ZH   C  
  --   -  
  赵   A  
  3.CONCAT  
  连接两个字符串;  
  SQL>   select   concat('010-','88888888')||'转23'   高乾竞电话   from   dual;  
  高乾竞电话  
  ----------------  
  010-88888888转23  
  4.INITCAP  
  返回字符串并将字符串的第一个字母变为大写;  
  SQL>   select   initcap('smith')   upp   from   dual;  
  UPP  
  -----  
  Smith  
  5.INSTR(C1,C2,I,J)  
  在一个字符串中搜索指定的字符,返回发现指定的字符的位置;  
  C1   被搜索的字符串  
  C2   希望搜索的字符串  
  I   搜索的开始位置,默认为1  
  J   出现的位置,默认为1  
  SQL>   select   instr('oracle   traning','ra',1,2)   instring   from   dual;  
  INSTRING  
  ---------  
  9  
  6.LENGTH  
  返回字符串的长度;  
  SQL>   select   name,length(name),addr,length(addr),sal,length(to_char(sal))   from   gao.nchar_tst;  
  NAME   LENGTH(NAME)   ADDR   LENGTH(ADDR)   SAL   LENGTH(TO_CHAR(SAL))  
  ------   ------------   ----------------   ------------   ---------   --------------------  
  高乾竞   3   北京市海锭区   6   9999.99   7  
  7.LOWER  
  返回字符串,并将所有的字符小写  
  SQL>   select   lower('AaBbCcDd')AaBbCcDd   from   dual;  
  AABBCCDD  
  --------  
  aabbccdd  
  8.UPPER  
  返回字符串,并将所有的字符大写  
  SQL>   select   upper('AaBbCcDd')   upper   from   dual;  
  UPPER  
  --------  
  AABBCCDD  
  9.RPAD和LPAD(粘贴字符)  
  RPAD   在列的右边粘贴字符  
  LPAD   在列的左边粘贴字符  
  SQL>   select   lpad(rpad('gao',10,'*'),17,'*')from   dual;  
  LPAD(RPAD('GAO',1  
  -----------------  
  *******gao*******  
  不够字符则用*来填满  
  10.LTRIM和RTRIM  
  LTRIM   删除左边出现的字符串  
  RTRIM   删除右边出现的字符串  
  SQL>   select   ltrim(rtrim('   gao   qian   jing   ','   '),'   ')   from   dual;  
  LTRIM(RTRIM('  
  -------------  
  gao   qian   jing  
  11.SUBSTR(string,start,count)  
  取子字符串,从start开始,取count个  
  SQL>   select   substr('13088888888',3,8)   from   dual;  
  SUBSTR('  
  --------  
  08888888  
  12.REPLACE('string','s1','s2')  
  string   希望被替换的字符或变量    
  s1   被替换的字符串  
  s2   要替换的字符串  
  SQL>   select   replace('he   love   you','he','i')   from   dual;  
  REPLACE('H  
  ----------  
  i   love   you  
  13.SOUNDEX  
  返回一个与给定的字符串读音相同的字符串  
  SQL>   create   table   table1(xm   varchar(8));  
  SQL>   insert   into   table1   values('weather');  
  SQL>   insert   into   table1   values('wether');  
  SQL>   insert   into   table1   values('gao');  
  SQL>   select   xm   from   table1   where   soundex(xm)=soundex('weather');  
  XM  
  --------  
  weather  
  wether  
  14.TRIM('s'   from   'string')  
  LEADING   剪掉前面的字符  
  TRAILING   剪掉后面的字符  
  如果不指定,默认为空格符    
  15.ABS  
  返回指定值的绝对值  
  SQL>   select   abs(100),abs(-100)   from   dual;  
  ABS(100)   ABS(-100)  
  ---------   ---------  
  100   100  
  16.ACOS  
  给出反余弦的值  
  SQL>   select   acos(-1)   from   dual;  
  ACOS(-1)  
  ---------  
  3.1415927  
  17.ASIN  
  给出反正弦的值  
  SQL>   select   asin(0.5)   from   dual;  
  ASIN(0.5)  
  ---------  
  .52359878  
   
  18.ATAN  
  返回一个数字的反正切值  
  SQL>   select   atan(1)   from   dual;  
   
  ATAN(1)  
  ---------  
  .78539816  
  19.CEIL  
  返回大于或等于给出数字的最小整数  
  SQL>   select   ceil(3.1415927)   from   dual;  
  CEIL(3.1415927)  
  ---------------  
  4  
  20.COS  
  返回一个给定数字的余弦  
  SQL>   select   cos(-3.1415927)   from   dual;  
  COS(-3.1415927)  
  ---------------  
  -1  
  21.COSH  
  返回一个数字反余弦值  
  SQL>   select   cosh(20)   from   dual;  
  COSH(20)  
  ---------  
  242582598  
  22.EXP  
  返回一个数字e的n次方根  
  SQL>   select   exp(2),exp(1)   from   dual;  
  EXP(2)   EXP(1)  
  ---------   ---------  
  7.3890561   2.7182818  
  23.FLOOR  
  对给定的数字取整数  
  SQL>   select   floor(2345.67)   from   dual;  
  FLOOR(2345.67)  
  --------------  
  2345  
  24.LN  
  返回一个数字的对数值  
  SQL>   select   ln(1),ln(2),ln(2.7182818)   from   dual;  
  LN(1)   LN(2)   LN(2.7182818)  
  ---------   ---------   -------------  
  0   .69314718   .99999999  
  25.LOG(n1,n2)  
  返回一个以n1为底n2的对数    
  SQL>   select   log(2,1),log(2,4)   from   dual;  
  LOG(2,1)   LOG(2,4)  
  ---------   ---------  
  0   2  
  26.MOD(n1,n2)  
  回一个n1除以n2的余数  
  SQL>   select   mod(10,3),mod(3,3),mod(2,3)   from   dual;  
  MOD(10,3)   MOD(3,3)   MOD(2,3)  
  ---------   ---------   ---------  
  1   0   2  
  27.POWER  
  返回n1的n2次方根  
  SQL>   select   power(2,10),power(3,3)   from   dual;  
  POWER(2,10)   POWER(3,3)  
  -----------   ----------  
  1024   27  
  28.ROUND和TRUNC  
  按照指定的精度进行舍入  
  SQL>   select   round(55.5),round(-55.4),trunc(55.5),trunc(-55.5)   from   dual;  
  ROUND(55.5)   ROUND(-55.4)   TRUNC(55.5)   TRUNC(-55.5)  
  -----------   ------------   -----------   ------------  
  56   -55   55   -55  
  29.SIGN  
  取数字n的符号,大于0返回1,小于0返回-1,等于0返回0  
  SQL>   select   sign(123),sign(-100),sign(0)   from   dual;  
  SIGN(123)   SIGN(-100)   SIGN(0)  
  ---------   ----------   ---------  
  1   -1   0  
  30.SIN  
  返回一个数字的正弦值  
  SQL>   select   sin(1.57079)   from   dual;  
   
  SIN(1.57079)  
  ------------  
  1  
  31.SIGH  
  返回双曲正弦的值  
  SQL>   select   sin(20),sinh(20)   from   dual;  
  SIN(20)   SINH(20)  
  ---------   ---------  
  .91294525   242582598  
  32.SQRT  
  返回数字n的根  
  SQL>   select   sqrt(64),sqrt(10)   from   dual;  
  SQRT(64)   SQRT(10)  
  ---------   ---------  
  8   3.1622777  
  33.TAN  
  返回数字的正切值  
  SQL>   select   tan(20),tan(10)   from   dual;  
  TAN(20)   TAN(10)  
  ---------   ---------  
  2.2371609   .64836083  
  34.TANH  
  返回数字n的双曲正切值  
  SQL>   select   tanh(20),tan(20)   from   dual;  
  TANH(20)   TAN(20)  
  ---------   ---------  
  1   2.2371609  
  35.TRUNC  
  按照指定的精度截取一个数  
  SQL>   select   trunc(124.1666,-2)   trunc1,trunc(124.16666,2)   from   dual;  
  TRUNC1   TRUNC(124.16666,2)  
  ---------   ------------------  
  100   124.16  
  36.ADD_MONTHS  
  增加或减去月份  
  SQL>   select   to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm')   from   dual;  
  TO_CHA  
  ------  
  200002  
  SQL>   select   to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm')   from   dual;  
  TO_CHA  
  ------  
  199910  
  37.LAST_DAY  
  返回日期的最后一天  
  SQL>   select   to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd')   from   dual;  
  TO_CHAR(SY   TO_CHAR((S  
  ----------   ----------  
  2004.05.09   2004.05.10  
  SQL>   select   last_day(sysdate)   from   dual;  
  LAST_DAY(S  
  ----------  
  31-5月   -04  
  38.MONTHS_BETWEEN(date2,date1)  
  给出date2-date1的月份  
  SQL>   select   months_between('19-12月-1999','19-3月-1999')   mon_between   from   dual;  
  MON_BETWEEN  
  -----------  
  9  
  SQL>selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd'))   mon_betw   from   dual;  
  MON_BETW  
  ---------  
  -60  
  39.NEW_TIME(date,'this','that')  
  给出在this时区=other时区的日期和时间  
  SQL>   select   to_char(sysdate,'yyyy.mm.dd   hh24:mi:ss')   bj_time,to_char(new_time  
  2   (sysdate,'PDT','GMT'),'yyyy.mm.dd   hh24:mi:ss')   los_angles   from   dual;  
  BJ_TIME   LOS_ANGLES  
  -------------------   -------------------  
  2004.05.09   11:05:32   2004.05.09   18:05:32  
  40.NEXT_DAY(date,'day')  
  给出日期date和星期x之后计算下一个星期的日期  
  SQL>   select   next_day('18-5月-2001','星期五')   next_day   from   dual;  
  NEXT_DAY  
  ----------  
  25-5月   -01  
  41.SYSDATE  
  用来得到系统的当前日期  
  SQL>   select   to_char(sysdate,'dd-mm-yyyy   day')   from   dual;  
  TO_CHAR(SYSDATE,'  
  -----------------  
  09-05-2004   星期日  
  trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒  
  SQL>   select   to_char(trunc(sysdate,'hh'),'yyyy.mm.dd   hh24:mi:ss')   hh,  
  2   to_char(trunc(sysdate,'mi'),'yyyy.mm.dd   hh24:mi:ss')   hhmm   from   dual;  
  HH   HHMM  
  -------------------   -------------------  
  2004.05.09   11:00:00   2004.05.09   11:17:00  
    42.CHARTOROWID  
  将字符数据类型转换为ROWID类型  
  SQL>   select   rowid,rowidtochar(rowid),ename   from   scott.emp;  
  ROWID   ROWIDTOCHAR(ROWID)   ENAME  
  ------------------   ------------------   ----------  
  AAAAfKAACAAAAEqAAA   AAAAfKAACAAAAEqAAA   SMITH  
  AAAAfKAACAAAAEqAAB   AAAAfKAACAAAAEqAAB   ALLEN  
  AAAAfKAACAAAAEqAAC   AAAAfKAACAAAAEqAAC   WARD  
  AAAAfKAACAAAAEqAAD   AAAAfKAACAAAAEqAAD   JONES  
  43.CONVERT(c,dset,sset)  
  将源字符串   sset从一个语言字符集转换到另一个目的dset字符集  
  SQL>   select   convert('strutz','we8hp','f7dec')   "conversion"   from   dual;  
  conver  
  ------  
  strutz  
  44.HEXTORAW  
  将一个十六进制构成的字符串转换为二进制  
  45.RAWTOHEXT  
  将一个二进制构成的字符串转换为十六进制  
  46.ROWIDTOCHAR  
  将ROWID数据类型转换为字符类型  
  47.TO_CHAR(date,'format')  
  SQL>   select   to_char(sysdate,'yyyy/mm/dd   hh24:mi:ss')   from   dual;  
  TO_CHAR(SYSDATE,'YY  
  -------------------  
  2004/05/09   21:14:41  
  48.TO_DATE(string,'format')  
  将字符串转化为ORACLE中的一个日期  
阅读(1054) | 评论(0) | 转发(0) |
0

上一篇:表空间

下一篇:排重语句

给主人留下些什么吧!~~