常用函数
- sysdate 系统的当前日期和时间,包括每月日和时分秒
- Lower(string) 大写转小写
- Upper(string) 小写转大写
- trim(string) 、ltrim、rtrim 去左右空格
- to_numer(string) 字符转数字
- to_char(date,'format') 日期按照format格式转化为字符串
- to_date(string,'format') 字符串按照format的格式转化为日期
- Replace(string,searching,[repstring]) 替换字符串
- Instr(string,m) 测试子串是否存在
- Substr(string,m,n) 取子字符串,m 表示截取字符串的开始位置,n表示要截取的字符串的长度
- || 字符串连接
- length(string) 返回字符串string的长度
- months_between(date1,date2) 返回给定日期的月数
- nvl (exp1,exp2)如果exp1的值为null,则返回exp2,返回值可以为字符串,日期型、数值型等。
- decode(input_value,value,result,[,value,result....][,default_result])
相当于一个条件语句(IF)。将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干个数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数返回默认值。除此之外DECODE函数还能识别和操作空值。
- Round(m,n)四舍五入
- Trunc(m,n) 截断,取前n位
- floor(num) 向下取整
- ceil(num) 向上取整
sign(num)取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
select a,decode(sign(sal-5),-1,'初级',0,'初级',
(decode(sign(sal-100),0,'中级',-1,'中级',
(decode(sign(sal-100),1,'高级',
'未知')))))
from item
where a = '2';
聚集函数
- avg 求平均值
- min 求最大值
- max 求最小值
- sum 求和
- count 计数
其中sum和avg的输入必须是数值,其他运算可以作用数据库中的任何数据类型
使用聚集函数查询结果只有一个属性的关系,其中只包括一个元组;
count(属性名)和count(*)的区别在于count(*)返回满足条件的元组的总个数(即使元组中的所有属性取值都为nulll也会进行计算),而count(属性名)返回的是该属性中取值不为null的总个数。
不允许使用count(*)的同时使用distinct;
不适用分组的聚集函数,在select 子句中,只能出现聚集函数,不能出现其他的属性名;
除count(*)以外的所有聚集函数,都会忽略null值。如果需求不忽略null值,可以使用nvl进行处理;
聚集函数在输入为空集的情况下返回一个属性一个元组的关系,返回结果为null值,而count函数在输入为空集的情况下,count返回0;
聚集函数只能出现在select子句和having 子句中;
示列如下
select avg(sal),count(*)
from item
where a='2';
count(*)会计算null,而avg会忽略null,在这里会除以sal不为空的计数
select avg(nvl(sal,0)),count(*)
from item
where a='2';
上面这个例子则会除以包括sal为空的计数