Oracle 11g 常用函数(Functions)详解
作者:wugy ([email protected])
注:如发现错误请Email联系
语法:
ABS ( n )
用法:
返回n的绝对值。
参数:
n为数值数据类型,或者可以隐式转化为数值类型的其他数据类型。
例子:
SELECTABS(-12345.6789) result FROM dual;
RESULT
----------
12345.6789
语法:
ACOS ( n )
用法:
返回n的反余弦值。n的值必须在-1到1之间;返回值的范围从0到pi。
参数:
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
例子:
SELECT ACOS(-1)result FROM dual;
RESULT
----------
3.14159265
语法:
ADD_MONTHS ( date,integer )
用法:
返回date加上integer个月后的日期。一个月是由会话(session)参数NLS_CALENDAR来定义的。
参数:
date是一个日期时间值或可以隐式转化为DATE的其他值。integer是一个整数或其他可以转化为整数的值。返回值永远是DATE数据类型。如果date是一个月的最后一天,或者得到结果的月份的天数比date所在月份的天数时,返回结果是结果月份的最后一天。
例子:
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('2011-01-31','YYYY-MM-DD'),1),'YYYY-MM-DD') result FROM dual;
RESULT
----------
2011-02-28
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('2011-01-30','YYYY-MM-DD'),1),'YYYY-MM-DD') result FROM dual;
RESULT
----------
2011-02-28
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('2011-01-27','YYYY-MM-DD'),1),'YYYY-MM-DD') result FROM dual;
RESULT
----------
2011-02-27
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('2011-01-31','YYYY-MM-DD'), 1.9),'YYYY-MM-DD') result FROM dual;
RESULT
----------
2011-02-28
语法:
ASCII ( char )
用法:
返回char的第一个字符在数据库字符集中的十进制表示。
参数:
char可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,或者能转化成它们的其他数据类型。
例子:
SELECT ASCII('甲骨文') result FROM dual;
RESULT
----------
42450
SELECTASCII('Oracle') result FROM dual;
RESULT
----------
79
语法:
ASCIISTR ( char )
用法:
返回字符串char在数据库字符集中的ASCII版本。非ASCII字符将会转化成\XXXX的格式,其中XXXX是UTF-16编码单元。
例子:
SELECT ASCIISTR('甲骨文') result FROM dual;
RESULT
---------------
\7532\9AA8\6587
SELECTASCIISTR('Oracle') result FROM dual;
RESULT
------
Oracle
语法:
ASIN ( n )
用法:
返回n的反正弦值。
n必须在-1到1之间。返回值的范围在-pi/2到pi/2。
参数:
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
例子:
SELECT ASIN(1)result FROM dual;
RESULT
----------
1.57079633
语法:
ATAN ( n )
用法:
返回n的反正切值。n的取值没有范围;而返回值的范围在-pi/2到pi/2之间。
参数:
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
例子:
SELECT ATAN(1)result FROM dual;
RESULT
----------
.785398163
语法:
ATAN2 ( n1, n2 )
用法:
返回n1与n2的反正切值。等同于ATAN(n1/n2)。
参数:
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
例子:
SELECT ATAN2(1,0)result FROM dual;
RESULT
----------
1.57079633
SELECT ATAN2(-.1,0)result FROM dual;
RESULT
----------
-1.5707963
语法:
AVG ( [DISTINCT|ALL]expr )
用法:
返回expr的平均值。
参数:
expr可以为任意数值类型或可以转化为数值类型的其他类型。返回值的数据类型与expr的数据类型相同。
例子:
SELECT AVG(DISTINCTsal) result FROM scott.emp;
RESULT
----------
2064.58333
SELECT AVG(ALL sal)result FROM scott.emp;
RESULT
----------
2073.21429
语法:
BFILENAME ('directory', 'filename' )
用法:
返回一个关于directory和filename的BFILE定位器。
参数:
directory是一个DIRECTORY对象。filename是服务器文件系统的一个文件名。
例子:
作为SYSDBA
CREATE DIRECTORYMEDIA_DIR AS '/home/oracle';
GRANT READ ONDIRECTORY MEDIA_DIR TO TEST;
作为TEST
CREATE TABLEtest_bfile (id NUMBER, bfiles BFILE);
INSERT INTOtest_bfile VALUES (1, BFILENAME('MEDIA_DIR', 'uname.txt'));
COMMIT;
语法:
BIN_TO_NUM ( expr [,expr, ...] )
用法:
将字节向量转化成等值的NUMBER。
参数:
每个expr不是0就是1。
例子:
SELECTBIN_TO_NUM(1,1,0,0) result FROM dual;
RESULT
----------
12
语法:
BITAND ( expr1,expr2 )
用法:
返回expr1与expr2进行位与运算的结果。
参数:
expr1和expr2都是NUMBER,结果也是NUMBER。如果其中一个参数为NULL,结果也为NULL。
例子:
SELECT BITAND(
BIN_TO_NUM(1,1,0,0),
BIN_TO_NUM(1,0,1,1)) result FROM dual;
RESULT
----------
8
语法:
CARDINALITY (nested_table )
用法:
返回内嵌表中元素的个数。
参数:
返回值的类型是NUMBER。如果内嵌表是空的,或者是一个null集合,则返回NULL。
例子:
CREATE OR REPLACETYPE test_nestedtable AS TABLE OF VARCHAR2(20);
/
CREATE TABLE test_nt(id NUMBER, nt test_nestedtable) NESTED TABLE nt STORE AS nt_tab;
INSERT INTO test_nt VALUES(1, test_nestedtable('hello', 'nested', 'table'));
COMMIT;
SELECT id, CARDINALITY(nt) FROM test_nt;
ID CARDINALITY(NT)
-------------------------
1 3
语法:
CAST ( { expr | MULTISET ( subquery ) } AS type_name )
用法:
将一种内置的数据类型或集合类型转化成另一种内置的数据类型或集合类型。CAST不支持LONG,LONG RAW。
参数:
数据类型可以为BINARY_FLOAT,BINARY_DOUBLE,CHAR,VARCHAR2,NUMBER,DATETIME,INTERVAL,RAW,ROWID,UROWID,NCHAR,NVARCHAR2。
例子:
SELECT CAST(TO_DATE('2011/10/07','YYYY/MM/DD')AS TIMESTAMP WITH LOCAL TIME ZONE) result FROM dual;
RESULT
-----------------------------------
07-OCT-1112.00.00.000000 AM +08:00
CREATE OR REPLACETYPE cust_address_typ
AS OBJECT
( street_address VARCHAR2(40)
, postal_code VARCHAR2(10)
, city VARCHAR2(30)
, state_province VARCHAR2(10)
, country_id CHAR(2)
);
/
CREATE TYPE address_book_tAS TABLE OF cust_address_typ;
/
CREATE TABLEcust_address (
custno NUMBER,
street_address VARCHAR2(40),
postal_code VARCHAR2(10),
city VARCHAR2(30),
state_province VARCHAR2(10),
country_id CHAR(2));
CREATE TABLEcust_short (custno NUMBER, name VARCHAR2(31));
INSERT INTOcust_short VALUES (1, 'TEST');
INSERT INTOcust_address VALUES (1, 'O STREET', '9900', 'ORACLE', 'DATABASE', 'CN');
COMMIT;
SELECT s.custno,s.name,
CAST(MULTISET(SELECT ca.street_address,ca.postal_code, ca.city, ca.state_province, ca.country_id
FROM cust_address ca
WHERE s.custno = ca.custno)
AS address_book_t)
FROM cust_short s
ORDER BY s.custno;
CUSTNO NAME RESULT(STREET_ADDRESS,POSTAL_CODE,CITY,STATE_PROVINCE,COUNTRY_ID)
------ -----------------------------------------------------------------------
1 TEST ADDRESS_BOOK_T(CUST_ADDRESS_TYP(O STREET,9900,ORACLE,DATABASE,CN))
语法:
CEIL ( n )
用法:
返回大于或等于n的最小整数。
参数:
n可以为任意数值类型或可以隐式转化成数值的其他类型。返回值的类型与参数的数据类型相同。
例子:
SELECT CEIL(1234.5)result FROM dual;
RESULT
----------
1235
语法:
CHARTOROWID ( char )
用法:
将CHAR,VARCHAR2,NCHAR或NVARCHAR2的数据类型转换成ROWID数据类型。
例子:
select rowid, id fromtest_nt
wherechartorowid('AAAVLjAAEAAAADmAAA') = rowid;
ROWID ID
----------------------------
AAAVLjAAEAAAADmAAA 1
语法:
CHR ( n [ USINGNCHAR_CS ] )
用法:
返回拥有二进制编码n的字符,如果使用NCHAR_CS,就使用数据库字符集。对于单字节字符集,如果n大于256,那么会先进行n mod 256取余数的操作。
参数:
n是一个NUMBER类型的值,或者可以转化成NUMBER的其他类型的值。返回值是一个字符。
例子:
select CHR(42450)from dual;
CHR(42450)
----------
甲
语法:
COALESCE ( { expr [,expr ] ... } )
用法:
返回第一个非NULL的值,至少有两个expr。
参数:
expr的数据类型必须一致。
例子:
select COALESCE (null, 123, '123') from dual;
select COALESCE (null, 123, '123') from dual
*
Error at line 1
ORA-00932:inconsistent datatypes: expected NUMBER got CHAR
select COALESCE (null, 123, 456) from dual;
COALESCE(NULL,123,456)
----------------------
123
语法:
COMPOSE ( char )
用法:
将参数的字符串转化成相同字符集下的Unicode字符串。
参数:
char可以为CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB。
例子:
SELECT COM