4. 数值函数
4.1. 函數:ABS
语法:
ABS(number)
用途:
该函数返回数值number的绝对值.绝对值就是一个数去掉符号的那部分.
4.2. 函數:SQRT
语法:
SQRT(number)
用途:
该函数返回数值number的平方根,输入值必须大于等于0,否则返回错误.
4.3. 函數:CEIL
语法:
CEIL(number)
用途:
该函数返回大于等于输入值的下一个整数.
4.4. 函數:FLOOR
语法:
FLOOR(number)
用途:
该函数返回小于等于number的最大整数.
4.5. 函數:MOD
语法:
MOD(n,m)
用途:
该函数返回n除m的模,结果是n除m的剩余部分.m,n可以是小数,负数.
4.6. 函數:POWER
语法:
POWER(x,y)
用途:
该函数执行LOG函数的反操作,返回x的y次方.
4.7. 函數:ROUND
语法:
ROUND(number,decimal_digits)
用途:
该函数将数值number四舍五入到指定的小数位.如果decimal_digits为0,则返回整数.decimal_digits可以为负数.
4.8. 函數:TRUNC
语法:
TRUNC(number[,decimal_pluces])
用途:
该函数在指定的小数字上把一个数值截掉.如果不指定精度,函数预设精度为0. decimal_pluces可以为负数.
4.9. 函數:SIGN
语法:
SIGN(number)
用途:
该函数返回number的符号,如果number为正数则返回1,为负数则返回-1,为0则返回0.
4.10. 函數:SIN
语法:
SIN(number)
用途:
该函数返回弧度number的正弦值.
4.11. 函數:SINH
语法:
SINH(number)
用途:
该函数返回number的返正弦值.
4.12. 函數:COS
语法:
COS(number)
用途:
该函数返回弧度number的三角余弦值.要用角度计算余弦,可以将输入值乘以0.01745转换成弧度后再计算.
4.13. 函數:COSH
语法:
COSH(number)
用途:
该函数返回输入值的反余弦值.
4.14. 函數:TAN
语法:
TAN(number)
用途:
该函数返回弧度number的正切值.
4.15. 函數:TANH
语法:
TANH(number)
用途:
该函数返回数值number的反正切值.
4.16. 函數:LN
语法:
LN(number)
用途:
该函数返回number自然对数.
4.17. 函數:EXP
语法:
EXP(number)
用途:
该函数返回e(2.71828183)的number次方.该函数执行自然对数的反过程.
4.18. 函數:LOG
语法:
LOG(base,number)
用途:
该函数返回base为底,输入值number的对数.
5. 单行函数:
单行函数中可以对任何数据类型的数据进行操作.
5.1. 函數:DUMP
语法:
DUMP(expression[,format[,start[,length]]])
用途:
该函数按指定的格式显示输入数据的内部表示.下表列出了有效的格式.
格式代码 | 描述 |
8 | 八进制 |
10 | 十进制 |
16 | 十六进制 |
17 | 单字符 |
例如:
SELECT DUMP('FARRELL',16)
FROM dual
DUMP('FARRELL',16)
----------------------------------
Typ=96 Len=7: 46,41,52,52,45,4c,4c
5.2. 函數:GREATEST
语法:
GREATEST(list of values)
用途:
该函数返回列表中项的最大值.对数值或日期来说,返回值是最大值或最晚日期,如果列表中包含字符串,返回值是按字母顺序列表中的最后一项.
例如:
SELECT GREATEST(123,234,432,112)
FROM dual
GREATEST(123,234,432,112)
-------------------------
432
5.3. 函數:LEAST
语法:
LEAST(list of values)
用途:
该函数返回列表中项的最小值.对数值或日期来说,返回值是最小值或最早日期,如果列表中包含字符串,返回值是按字母顺序列表中的第一项.
例如:
SELECT LEAST(sysdate,sysdate-10)
FROM dual
LEAST(SYS
---------
10-JAN-00
5.4. 函數:NVL
语法:
NVL(expression,replacement_value)
用途:
如果表达式不为空值,函数返回该表达式的值,如果是空值,就返回用来替换的值.
例如:
SELECT last_name,
NVL(TO_CHAR(COMMISSION),'NOT APPLICABLE')
FROM employee
WHERE department_id=30
LAST_NAME NVL(TO_CHAR(COMMISSION),'NOTAPPLICABLE')
--------------- ----------------------------------------
ALLEN 300
WARD 500
MARTIN 1400
BLAKE NOT APPLICABLE
6. 多行函数
组函数可以对表达式的所有值操作,也可以只对其中不同值进行操作,组函数的语法如下所示:
function[DISTINCT|ALL expression]
如果既不指定DISTINCT,也不指定ALL,函数将对查询返回的所有数据行进行操作.不能在同一个SELECT语句的选择列中同时使用组函数和单行函数.
6.1. 函數:AVG
语法:
AVG([DISTINCT|ALL] expression)
用途:
对查询返回的数据行求平均值.
例如:
SELECT AVG(sal) "Average"
FROM emp
Average
----------
2073.21429
6.2. 函數:COUNT
语法:
COUNT([DISTINCT|ALL] expression)
用途:
计算表达式的个数.要计算EMP表中雇员的个数.
例如:
SELECT COUNT(deptno)
FROM emp
COUNT(DEPTNO)
-------------
14
SELECT COUNT(distinct deptno)
FROM emp
COUNT(DISTINCTDEPTNO)
---------------------
3
6.3. 函數:MAX
语法:
MAX([DISTINCT|ALL] expression)
用途:
对查询返回的行集求最大值.如果有多个最大值,将所有均返回.要检索公司中最高工资的雇员.
语法:
SELECT ename,sal
FROM emp
WHERE sal=(select max(sal)
FROM emp)
ENAME SAL
---------- ---------
KING 5000
6.4. 函數:MIN
语法:
MIN([DISTINCT|ALL] expression)
用途:
对查询返回的行集求最小值.如果有多个最小值,将所有均返回.
例如:
SELECT MIN(last_name)
FROM employee
MIN(LAST_NAME)
---------------
ADAMS
6.5. 函數:SUM
语法:
SUM([DISTINCT|ALL] expression)
用途:
计算查询返回的所有非空数值的总和.如果返回的数据都是空值,则该函数也返回空值.
例如:
SELECT SUM(salary)"Total"
FROM employee
WHERE department_id=10
Total
---------
8750
6.6. 函數:VARIANCE
语法:
VARIANCE([DISTINCT|ALL] expression)
用途:
该函数计算返回所有行的统计方差.
例如:
SELECT VARIANCE(salary)
FROM employee
VARIANCE(SALARY)
----------------
973659.27
伪列 | 返回值 |
Sequence.CURRVAL | 上一次由序列产生器产生的序列名值.只有在当前实例会话中从该序列选择过一次值,这个伪列才会有效. |
LEVEL | 查诣的深度,LEVEL适用于特殊的树查询. |
Sequence.NEXTVAL | 选择这个伪列将导致序列发生器返回该序列的下一个值.一旦选择了该值,它就不能被重用,因为以后的每次检索都将返回下一个值. |
ROWID | 这个伪列表示数据行确切的存储位置.ROWID的格式是一个三个16进制数的结构AAAAAAAA.BBBB.CCCC,这里AAAAAAAA表示数据库文件中包含该行的块号,BBBB是数据块内部的行号,而CCCC则是数据中的文件ID. |
ROWNUM | 被检索数据行的序列号. |
SYSDATE | 当前日期和时间. |
UID | 当前用户的标识ID. |
USER | 用户登录进数据库的名字. |
TABLE: LOCATION 部门地址表
-------------------- -------- ----
LOCATION_ID NOT NULL NUMBER(3) 地址ID
REGIONAL_GROUP VARCHAR2(20) 地址名
TABLE: DEPARTMENT 部门名称表
-------------------- -------- ----
DEPARTMENT_ID NOT NULL NUMBER(2) 部门ID
NAME VARCHAR2(14) 部门名称
LOCATION_ID NUMBER(3) 地址ID(LOCATION.LOCATION_ID)
TABLE: JOB 工种表
-------------------- -------- ----
JOB_ID NOT NULL NUMBER(3) 工种ID
FUNCTION VARCHAR2(30) 工种名称
TABLE: EMPLOYEE 雇员信息表
-------------------- -------- ----
EMPLOYEE_ID NOT NULL NUMBER(4) 雇员ID
LAST_NAME VARCHAR2(15)
FIRST_NAME VARCHAR2(15)
MIDDLE_INITIAL VARCHAR2(1)
JOB_ID NUMBER(3) 工种ID(JOB.JOB_ID)
MANAGER_ID NUMBER(4) 领导ID(EMPLOYEE.EMPLOYEE_ID)
HIRE_DATE DATE 雇佣日期
SALARY NUMBER(7,2) 薪水
COMMISSION NUMBER(7,2) 佣金
DEPARTMENT_ID NUMBER(2) 部门ID(DEPARTMENT.DEPARTMENT_ID)
TABLE: SALARY_GRADE 薪资等级表
-------------------- -------- ----
GRADE_ID NOT NULL NUMBER(3) 等级ID
LOWER_BOUND NUMBER(7,2) 最低工资
UPPER_BOUND NUMBER(7,2) 最高工资
TABLE: PRODUCT 产品信息表
-------------------- -------- ----
PRODUCT_ID NOT NULL NUMBER(6) 品号
DESCRIPTION VARCHAR2(30) 品名
TABLE: PRICE 产品价格表
-------------------- -------- ----
PRODUCT_ID NOT NULL NUMBER(6) 品号(PRODUCT.PRODUCT_ID)
LIST_PRICE NUMBER(8,2) 价格
MIN_PRICE NUMBER(8,2) 最低价格
START_DATE NOT NULL DATE 生效日期
END_DATE DATE 失效日期
TABLE: CUSTOMER 客户信息表
-------------------- -------- ----
CUSTOMER_ID NOT NULL NUMBER(6) 客户ID(CUSTOMER.CUSTOMER_ID)
NAME VARCHAR2(45) 客户名
ADDRESS VARCHAR2(40) 客户地址
CITY VARCHAR2(30) 城市
STATE VARCHAR2(2) 州
ZIP_CODE VARCHAR2(9) 邮编
AREA_CODE NUMBER(3) 区号
PHONE_NUMBER NUMBER(7) 电话号码
SALESPERSON_ID NUMBER(4) 销售员ID(EMPLOYEE.EMPLOYEE_ID)
CREDIT_LIMIT NUMBER(9,2) 信用限制
COMMENTS LONG 备注
TABLE: SALES_ORDER 订单单头表
-------------------- -------- ----
ORDER_ID NOT NULL NUMBER(4) 订单ID
ORDER_DATE DATE 订单日期
CUSTOMER_ID NUMBER(6) 客户ID(CUSTOMER.CUSTOMER_ID)
SHIP_DATE DATE 出货日期
TOTAL NUMBER(8,2) 总金额
TABLE: ITEM 订单单身表
-------------------- -------- ----
ORDER_ID NOT NULL NUMBER(4) 订单ID(SALES_ORDER.ORDER_ID)
ITEM_ID NOT NULL NUMBER(4) 订单行号
PRODUCT_ID NUMBER(6) 品号(PRODUCT.PRODUCT_ID)
ACTUAL_PRICE NUMBER(8,2) 实际价格
QUANTITY NUMBER(8) 订单数量
TOTAL NUMBER(8,2) 总金额