`
tingshu
  • 浏览: 34415 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle函数

阅读更多
                          
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(48), chr(65) chr65 from dual;
 
CHR(48) CHR65
------- -----
0	A
3、	CONCAT
连接两个字符串;

SQL> select concat('Travel', 'sky') || '-Shanghai' xhhx from dual;
 
XHHX
------------------
Travelsky-Shanghai
4、	INITCAP
返回字符串并将字符串的第一个字母变为大写;

SQL> select initcap('zhang') upp from dual;
 
UPP
-----
Zhang
5、	INSTR(C1, C2, I, J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1  被搜索的字符串
C2  希望搜索的字符串
I    搜索的开始位置,默认为1
J    出现的位置,默认为1

SQL> select instr('oracle training', 'ra', 1, 2) instring from dual;
 
  INSTRING
----------
         9
6、	LENGTH
返回字符串的长度;
SQL> select length('zhang') from dual;
 
LENGTH('ZHANG')
---------------
              5
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 rpad(lpad('cool', 10, '*'), 15, '*') from dual;
 
RPAD(LPAD('COOL',10,'*'),15,'*
------------------------------
******cool*****

不够字符则用*来填满

   10、LTRIM和RTRIM
LTRIM  删除左边出现的字符串
RTRIM  删除右边出现的字符串

       SQL> select rtrim(ltrim('******cool******', '*'), '*')cool from dual;
 
COOL
----
cool
11、SUBSTR(string, start, count)
取子字符串,从start开始,取count个
SQL> select substr('13088888888',3,8) from dual;
 
SUBSTR('13088888888',3,8)
-------------------------
08888888
12、REPLACE('string','s1','s2')
string   希望被替换的字符或变量 
s1    被替换的字符串
s2    要替换的字符串
    SQL> select replace('He love you','He','I') from dual;
 
REPLACE('HELOVEYOU','HE','I')
-----------------------------
I love you
13、返回一个与给定的字符串读音相同的字符串
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
14、trim( [ leading | trailing | both  [ trim_character ]  ]   string1 )
leading - remove trim_string from the front of string1.
trailing - remove trim_string from the end of string1.
both - remove trim_string from the front and end of string1.
       SQL> select trim('s' from 'string') from dual;
 
TRIM('S'FROM'STRING')
---------------------
tring
 
SQL> select trim(LEADING  from '  string  ') from dual;
 
TRIM(LEADINGFROM'STRING')
-------------------------
String
SQL> select trim(TRAILING   from '  string  ') from dual;
 
TRIM(TRAILINGFROM'STRING')
--------------------------
  String
15、ABS
返回指定值的绝对值
    SQL> select abs(-888) from dual;
 ABS(-888)
----------
       888
16、ACOS
给出反余弦的值
    SQL> select acos(-1) from dual;
  ACOS(-1)
----------
3.14159265
17、ASIN
给出反正弦的值
    SQL> select asin(0.5) from dual;

 ASIN(0.5)
----------
0.52359877
18、ATAN
返回一个数字的反正切值
    SQL> select atan(1) from dual;
 
   ATAN(1)
----------
0.78539816
19、CEIL
返回大于或等于给出数字的最小整数
    SQL>  select ceil(-2.1212) from dual;
 
CEIL(-2.1212)
-------------
           -2
20、COS
返回一个给定数字的余弦
SQL> select cos(-3.1415927) from dual;
 
COS(-3.1415927)
---------------
-0.999999999999
21、 COSH
返回一个数字反余弦值
    SQL> select cosh(20) from dual;
 
  COSH(20)
----------
242582597.
22、EXP
返回一个数字e的n次方根
   SQL>  select exp(2),exp(1) from dual;
 
    EXP(2)     EXP(1)
---------- ----------
7.38905609 2.71828182
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 0.69314718 0.99999998953
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)
------------
0.9999999999
31、SIGH
返回双曲正弦的值
    SQL>  select sin(20),sinh(20) from dual;
 
   SIN(20)   SINH(20)
---------- ----------
0.91294525 242582597.
32、SQRT
返回数字n的根
SQL> select sqrt(64),sqrt(10) from dual;
 
  SQRT(64)   SQRT(10)
---------- ----------
         8 3.16227766
33、TAN
返回数字的正切值
    SQL>  select tan(20),tan(10) from dual;
 
   TAN(20)    TAN(10)
---------- ----------
2.23716094 0.64836082
34、TANH
返回数字n的双曲正切值
    SQL>  select tanh(20),tan(20) from dual;
 
  TANH(20)    TAN(20)
---------- ----------
1	2.23716094
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_CHAR(ADD_MONTHS(TO_DATE('19
------------------------------
200002
37、LAST_DAY
返回日期的最后一天
     SQL> select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;
 
TO_CHAR(SYSDATE,'YYYY.MM.DD') TO_CHAR((SYSDATE)+1,'YYYY.MM.D
----------------------------- ------------------------------
2010.12.28                    2010.12.29
SQL> select last_day(sysdate) from dual;
 
LAST_DAY(SYSDATE)
-----------------
2010-12-31 10:46:
38、MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份
    SQL> select months_between(to_date('2010.05.20','yyyy.mm.dd'),to_date('2010.11.20','yyyy.mm.dd')) mon_betw from dual;
 
  MON_BETW
----------
        -6
39、NEW_TIME(date,'this','that')
给出在this时区=other时区的日期和时间
    SQL> select to_char(NEW_TIME(SYSDATE,'PDT','GMT'), 'yyyy.mm.dd hh24:mi:ss') from dual;
 
TO_CHAR(NEW_TIME(SYSDATE,'PDT'
------------------------------
2010.12.28 17:57:14
40、NEXT_DAY(date,'day')
给出日期date和星期x之后计算下一个星期的日期
    SQL> select next_day('06-Aug-03', 'SUNDAY') from dual;
 
NEXT_DAY('06-AUG-03','SUNDAY')
------------------------------
2003-8-10
41、SYSDATE
用来得到系统的当前日期
    SQL> select to_char(sysdate,'yyyy-mm-dd  day') from dual;
 
TO_CHAR(SYSDATE,'YYYY-MM-DDDAY
------------------------------
2010-12-28  Tuesday

trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒
SQL> select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh, to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;
 
HH                  HHMM
------------------- -------------------
2010.12.28 11:00:00 2010.12.28 11:08: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;
 
conversion
----------
strutz
44、HEXTORAW
将由string表示的二进制数值转换为一个RAW数值. String应该包含一个十六进制的数值. String中的每两个字符表示了结果RAW中的一个字节   

SQL> select   HEXTORAW( '6161616120')  from   dual;
 
HEXTORAW('6161616120')
----------------------
6161616120
45、RAWTOHEXT
       将RAW类数值rawvalue转换为一个相应的十六进制表示的字符串. rawvalue中的每个
字节都被转换为一个双字节的字符串

 SQL> select   to_char(   rawtohex( 'aaaa '))   from   dual;
 
TO_CHAR(RAWTOHEX('AAAA'))
-------------------------
6161616120
46、将ROWID数据类型转换为字符类型

    SQL>SELECT ROWID FROM employees 
   WHERE ROWIDTOCHAR(ROWID) LIKE '%JAAB%';

ROWID
------------------
AAAFfIAAFAAAABSAAb
47、TO_CHAR(date, 'format')
SQL>  select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
 
TO_CHAR(SYSDATE,'YYYY/MM/DDHH2
------------------------------
2010/12/28 12:05:31
48、TO_DATE(string, 'format')
将字符串转化为ORACLE中的一个日期
SQL> select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual;
 
TO_DATE('2004-05-0713:23:44','
------------------------------
2004-5-7 13:23:44
49、TO_MULTI_BYTE
将字符串中的单字节字符转化为多字节字符
    SQL> select to_multi_byte('hncj') from dual;
 
TO_MULTI_BYTE('HNCJ')
---------------------
hn
50、TO_NUMBER
将给出的字符转换为数字
    SQL> select to_number('2011') year from dual;
 
      YEAR
----------
      2011
51、BFILENAME(dir,file)
指定一个外部二进制文件
    SQL>insert  into  file_tb1 values 
(bfilename('lob_dir1','image1.gif'));
52、CONVERT('x','desc','source')
将x字段或变量的源source转换为desc
    SQL> SELECT CONVERT('? ¨o ¨a ¨? ? A B C D E ', 'US7ASCII', 'WE8ISO8859P1')
  2     FROM DUAL;
 
CONVERT('?¨o¨a¨??ABCDE','U
------------------------------
#? ?? ?? ?? #? A B C D E

使用ORACLE函数的例子:
select a.SITE, a.PAY_CURRENCY, a.PROMO_CODE, a.OFFER_TYPE, a.ORD_NO, 
       a.PAX_NUM, a.PAY_AMOUNT, a.ETDZ_DT_BEG, a.ETDZ_DT_END, b.salesSum, 
	   (b.beforePromo - b.salesSum) as promoTotal, a.CRT_DT,  b.beforePromo 
 from 
     (select distinct t.SITE, t.PAY_CURRENCY, m.PROMO_CODE, m.OFFER_TYPE, t.ORD_NO, 
	                  t.PAX_NUM, t.PAY_AMOUNT, m.ETDZ_DT_BEG, m.ETDZ_DT_END, t.CRT_DT 
	    from ord_info t, ord_promo m, ord_promo_cabin p 
		where 1=1 and p.PROMO_ID is not null and substr(T.PROMO_ID, 0, 6) = m.PROMO_CODE 
		          and p.PROMO_ID = m.ID and t.ORD_STATUS in (213, 214, 215)) a 
join 
     (select c.ORD_NO, c.salesSum, d.beforePromo 
	    from  (select ORD_NO, sum(PRICE_SALES) salesSum  
		        from pnr_item t group by ORD_NO) c 
		 join (select ORD_NO, sum(price_memb) beforePromo  
		        from pnr_item t group by ORD_NO) d 
		   on c.ORD_NO = d.ORD_NO) b 
  on  a.ord_no = b.ord_no
分享到:
评论

相关推荐

    oracle函数大全(CHM格式).rar

    "Oracle函数大全(CHM格式).rar"这个压缩包显然包含了关于Oracle数据库中各种函数的详细信息,对于学习和查询Oracle函数是非常宝贵的资源。 CHM(Compiled Help Manual)格式是一种由Microsoft开发的帮助文件格式...

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...

    ORACLE函数介绍 全系列中文

    oracle函数介绍 1 著名函数之单值函数 pdf oracle函数介绍 2 非著名函数之单值函数 pdf oracle函数介绍 3 著名函数之聚合函数 pdf oracle函数介绍 4 非著名函数之聚合函数 pdf oracle函数介绍 5 分析函数简述 ...

    oracle函数大全 oracle函数大全

    以下是关于Oracle函数的一些详细说明: 1. ASCII函数:ASCII函数返回与输入字符相对应的ASCII码,即十进制数字。例如,ASCII('A')返回65,ASCII('a')返回97。 2. CHR函数:CHR函数根据提供的整数返回对应的字符。...

    Oracle函数.chm

    Oracle函数.chm

    postgresql 兼容 oracle 函数

    标题和描述中提到的“postgresql 兼容 oracle 函数”就是指在PostgreSQL中实现与Oracle类似的函数,以便于在两个系统间平滑过渡。 Oracle数据库拥有大量的内置函数,如日期处理、字符串操作、数学计算等,这些在...

    oracle函数分类.rar

    下面将详细讲解在"oracle函数分类.rar"压缩包中的主要函数类别及其应用。 首先,我们关注的是**数值型函数**。在处理数字数据时,Oracle提供了多种操作函数,如`ROUND`用于四舍五入,`TRUNC`用于截断小数部分,`MOD...

    hibernate 调用oracle函数

    4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...

    oracle函数

    Oracle 函数大全 Oracle 函数是数据库管理系统中的一种重要组件,用于对数据进行处理和分析。Oracle 函数可以分为多种类型,包括字符串函数、数字函数、日期函数等。本文将对 Oracle 函数进行详细的介绍,并提供...

    Oracle函数大全-详细介绍.rar

    在"Oracle函数大全-详细介绍.rar"这个压缩包中,包含了对Oracle数据库中各种函数的详细解析,包括分析函数、单值函数和聚合函数等。 首先,让我们来看看单值函数。单值函数接受一个或多个输入值,返回一个新的单一...

    oracle函数大全(分类成9个word文档)

    这里,我们将深入探讨在"Oracle函数大全"压缩包中的九个Word文档所涵盖的知识点。 首先,"ORACLE函数大全.doc"很可能是整个文档集的总览,包含Oracle数据库中的各类函数的概览和分类,可能包括数学函数、字符串函数...

    oracle函数大全及知识点api

    本文将深入探讨Oracle函数大全及其API,同时也会涉及到错误代码查询,帮助你更好地理解和应用Oracle数据库。 一、Oracle函数概览 Oracle数据库提供了一系列内置函数,涵盖了数学、字符串、日期时间、转换、系统...

    oracle函数大全.chm

    oracle函数大全.chm oracle函数大全.chm

    Oracle函数手册.rar

    手册中的"Oracle函数手册.chm"文件很可能是一个帮助文档,提供了关于Oracle函数的全面指南。CHM(Compiled Help Manual)是Microsoft开发的一种编译后的帮助文件格式,通常用于软件的帮助系统,方便用户快速查找和...

    Oracle函数学习资料

    在Oracle函数学习中,我们通常会接触到各种类型的函数,包括处理类函数、数字函数和日期函数等。以下是对这些函数的详细说明: 1. **处理类函数**: - **LOWER函数**:此函数用于将字符串中的所有字母转换为小写。...

    Oracle函数速查手册

    这份"Oracle函数速查手册"旨在为用户提供一个全面、便捷的参考资源,无论是初学者还是经验丰富的开发者,都能从中受益。 Oracle函数分为多种类型,包括数值函数、字符串函数、日期时间函数、转换函数、系统信息函数...

    oracle函数速查手册

    "Oracle函数速查手册"是一份非常实用的参考资料,它涵盖了Oracle数据库中的各种函数,帮助用户快速查找并理解如何使用这些函数。在数据库管理、查询优化以及复杂数据处理时,这些函数起着至关重要的作用。 Oracle...

    oracle函数大全.doc

    Oracle 函数大全 Oracle 函数大全是 Oracle 数据库管理系统中的一系列函数,用于处理和操作数据。这些函数可以分为两大类:单行函数和组函数。 单行函数 单行函数用于处理单行数据,在 SELECT、WHERE、ORDER BY ...

    oracle函数大全中文api文档

    "Oracle函数大全中文API文档"是一个非常实用的资源,它提供了对Oracle数据库所有内置函数的详尽解释,帮助开发者和DBA快速理解和使用这些函数。 1. **日期与时间函数**: Oracle提供了处理日期和时间的大量函数,...

Global site tag (gtag.js) - Google Analytics