Oracle中有关数学表达式的语法

三角函数

SIN               ASIN              SINH
COS             ACOS           COSH
TAN             
 ATAN             TANH

  1. SELECT SIN(3.14159265/6), ASIN(1), SINH(1) FROM DUAL;  
  2. --其它的都类似 

ATAN2(x,y)      返回坐标为(x,y)点的反正切

  1. SELECT ATAN2(3,3) FROM DUAL;  

数学函数

ABS(x)          返回x的绝对值

  1. SELECT ABS(3), ABS(-1) FROM DUAL;  

BITAND(x,y)     返回对x,y进行位与(AND)操作的结果

  1. SELECT BITAND(1,0), BITAND(0,1), BITAND(0,0), BITAND(1,1), BITAND(1100, 1010) FROM DUAL;  

CEIL(x)         返回大于或等于x的最小整数(注意负数)

FLOOR(x)        返回小于或等于x的最大整数

  1. SELECT CEIL(5.6), CEIL(-5.6) FROM DUAL;  
  2. SELECT FLOOR(5.6), FLOOR(-5.6) FROM DUAL;  

EXP(x)          返回e的x次幂,其中e约为2.71828183
LN(x)           返回x的自然对数

  1. SELECT EXP(2), EXP(1), EXP(2.3) FROM DUAL;  
  2. SELECT LN(EXP(2)), LN(2.71828183) FROM DUAL;  

LOG(x,y)        返回以x为底y的对数
POWER(x,y)      返回x的y次幂
SQRT(x)         返回x的平方根

  1. SELECT LOG(10,100), POWER(3,3), SQRT(4) FROM DUAL;  

MOD(x,y)        返回x除以y的余数

  1. SELECT MOD(2.31, 1.1) FROM DUAL;  

SIGN(x)         返回x的符号

  1. SELECT SIGN(5), SIGN(-5), SIGN(0) FROM DUAL;  

位小数取整vkjsy是负数,则对x在小数点的左边的第|y|位取整。
                此函数是四舍五入取整
TRUNC(x[,y])    与ROUND类似,之不过是直接舍去尾数

  1. SELECT ROUND(1234.5678), ROUND(1234.5678, 2), ROUND(1234.5678, -2) FROM DUAL;  
  2. SELECT TRUNC(1234.5678), TRUNC(1234.5678, 2), TRUNC(1234.5678, -2) FROM DUAL;  

聚合函数

所谓聚合函数是指针对多条记录的函数。Oracle最常用的聚合函数包括,max()、min()、avg()、sum()和count()函数。本节将讲述这些函数的用法。

max()函数——求最大值

max()函数用于获得记录集在某列的最大值。例如,为了返回员工最高工资,可以利用max()函数。

select max(salary) max_salary from t_salary;

min()函数——求最小值

min()函数可以用来获得记录集在某列上的最小值,其功能与max()函数相反。

select distinct e.employee_name, s.salary

from t_employees e, t_salary s

where e.employee_id = s.employee_id and s.salary = (select min(salary) from t_salary)

avg()函数——求平均值

avg()函数用于获得记录集在某列上的平均值。

select e.employee_name, avg(salary)

from t_employees e, t_salary s

where e.employee_id = s.employee_id

group by e.employee_id, e.employee_name

sum()函数——求和

sum()函数用于获得结果集上某列值的和。

select e.employee_name, sum(salary)

from t_employees e, t_salary s

where e.employee_id = s.employee_id

group by e.employee_id, e.employee_name

count()函数——获得记录数

ount()函数的作用对象同样为记录集。与其他聚合函数不同的是,count()函数可以有三种方式来进行计数:

count(*)——计算行数

count(column)——计算某列

count(1)——般情况下select count(*) 与 count(1) 执行的结果是一样的,都包括了对null的统计.。

insert into t_employees values (16, null, null,null);

select count(*) from t_employees;

select count(employee_id) from t_employees;

select count(employee_name) from t_employees;

select count(1) from t_employees;

一般来说,利用count(1)进行计数的速度最快,但是特别注意的是,预期的结果是针对整行数据,还是某列的数据

运算表达式

Oracle中常用的运算包括:数学运算,逻辑运算和按位运算。本节将通过范例着重讲述这三种运算的常用运算符和运算规则。

数学运算

数学运算是最常用的运算方式,Oracle中的数学运算符包括:+、-、*、/,分别代表了加、减、乘除运算。在使用数学运算时,Oracle会自动将其他数据类型转换为数值型,然后再参与运算。

select 5+3 result from dual;

select 5-3 result from dual;

select 5*2 result from dual;

select 5/2 result from dual;

需要注意的是,任何一种运算符与null的运算结果均为null。

select 5+null result from dual;

select 5-null result from dual;

select 5*null result from dual;

select 5/null result from dual;

逻辑运算

Oracle中的逻辑运算包括:

>:大于运算,可用于数值型、日期型和字符串类型;

>=:大于等于运算,可用于数值型、日期型和字符串类型;

<:小于运算,可用于数值型、日期型和字符串类型;

<=:大于等于运算,可用于数值型、日期型和字符串类型;

=:等于,可用于数值型、日期型和字符串类型;

<>:不等于,可用于数值型、日期型和字符串类型;

!=:与<>用法相同;

NOT:取反操作;

AND:布尔值的与操作;

OR:布尔值的或操作。

需要注意的是,Oracle中的逻辑运算符只能作为条件判断,并不返回值。为了查询工资在5000-7000之间的记录,可以利用逻辑运算符来组合查询条件。

select * from t_salary where salary>=5000 and salary<=7000;

对于null值,需要特别注意的是,无论使用哪种运算符,结果都会返回null。当比较的结果为null,并作为条件出现时,Oracle都会将其解释为false。

select 1 result from dual where 1=null;

select 1 result from dual where 1<>null;

select 1 result from dual where null=null;

select 1 result from dual where null<>null;

位运算

从Oracle8i开始,系统已经提供了位运算符。最常用的莫过于bitand运算符。

select bitand(192, 100) result from dual;

最新文章

  1. sql中文日期格式转换(xxxx年x月x日)
  2. 线程变量ThreadLocal的使用
  3. [Leetcode][JAVA] Palindrome Partitioning II
  4. Python打包程序
  5. php的函数iconv在转&quot;utf-8&quot;到&quot;gb2312&quot;时会自动截断
  6. java开发之多线程需要学习和理解的东西
  7. Annotation 与 HttpClient(5)--Annotation HttpClient
  8. textarea定位光标
  9. 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结
  10. Python学习之路——函数的参数分类
  11. oracle连表语法
  12. WeX5学习笔记-02
  13. 监听端口,获取webService请求报文
  14. 上传文件---未能找到路径“D:\MyProject\Files\”的一部分
  15. CentOS 7 安装MongoDB详细步骤
  16. JAVA中的配置文件XML
  17. MYSQL增加tmp_table_size 的操作
  18. 五步整理你的css文件
  19. ThinkJava-持有对象
  20. 20145203盖泽双java实验三 敏捷开发与XP实践

热门文章

  1. 执行impdp时ORA-39213: Metadata processing is not available错误处理
  2. Hibernate的一级缓存:快照区
  3. 【前端】html5获取经纬度,百度api获取街区名,并使用JS保存进cookie
  4. AJPFX关于Swing组件的总结
  5. TigerGraph REST++API
  6. Java集合类工具CollectionUtils的操作方法
  7. codevs 2046 孪生素数 3 (水题日常)
  8. ssh 非root用户互信
  9. droplang - 删除一种 PostgreSQL 过程语言
  10. while循环(break、continue)