Oracle 函数
汇总函数、统计函数、聚合函数、分组函数
汇总函数必须跟 group by 语句一起使用,对数据进行分组汇总。
① 求和:sum(col)。列必须是数值。
② 最小值:min(col)。列可以是数值,也可以是字符。
③ 最大值:max(col)。列可以是数值,也可以是字符。
④ 平均值:avg(col)。列必须是数值。
⑤ 求记录数:count(*/1/col/distinct col)。
⑥ 中间值:median(col)。列必须是数值、时间、日期。不常用。
⑦ 方差:variance(col)。列必须是数值。基本没用过。
⑧ 标准差:stddev(col)。列必须是数值。基本没用过。
字符串处理函数
① substr(string,a,b)/substr(string,a)
string 为字符串,string 表示需要截取的字符串。
a、b 均为整型数字,a 表示开始截取的位置,b 表示截取几位,b 为空时冲开始位置截取全部字符串。
② instr(string1,tring2,start_positiong,nth_appearance)
返回的是需要查找的字符串在string的绝对位置。
string1 为字符串,在 string1 中进行查找。
string2 为字符串,表示即将要查找的字符串。
start_positiong 为整型数据,表示要从这个位置开始查找。为正数时,从左到右查找,为负数时,从优到左查找。
nth_positiong 为正正数,负数时会报错。表示查找第几次出现的string2。为空时默认为 1 。
使用:通常通过判断这个返回值确定某字段是否包含另一个字段。
③ replace(string1,tring2,sring3)
sring 为字符串;
string1 表示即将要修改和查找的字段。string2 表示要查找的字段,即被替换的字段;string3 表示要替换的新字段。
④ decode(string, tring1, value1, value2)
string 表示原字符串或者表达式,string1 表示需要满足的条件,可以是值,也可以是表达式。
如果满足条件,则返回 value1 ,如果不满足条件,则返回 value2 。
decode(string, tring1, value1, string2, value2……)
string 表示原字符串,如果字符串为 string 等于 string1,则返回 value1 ,如果字符串为 string 等于 string2,则返回 value2。
数字处理函数
① mod(number1,number2)
取余数的函数,比如mod(10,3) = 10/3 = 1。
② round(number,num_ditigs) 、trunk(number,num_ditigs)
number 表示要取整的数字, num_ditigs 表示要截取的小数位数,num_ditigs 为空默认为 0 。
③ nvl(a.b)
a、b 均为数值,是也可以是汇总函数;如果 a 为空值,则返回 b 。
其它
① wm_concat()
把列转换成一行一列显示,使用wm_concat函数可以显示在一行一列。
1 --1 建表 2 3 create table province_city 4 ( 5 province varchar2(100), 6 city varchar2(100) 7 ); 8 9 --2 插入数据 10 11 insert into province_city (province, city)values ('陕西', '西安'); 12 insert into province_city (province, city)values ('陕西', '宝鸡'); 13 insert into province_city (province, city)values ('陕西', '汉中'); 14 insert into province_city (province, city)values ('湖北', '武汉'); 15 insert into province_city (province, city)values ('湖北', '宜昌'); 16 insert into province_city (province, city)values ('湖北', '襄阳'); 17 18 commit; 19 20 --查询结果 21 22 select * from province_city; 23 24 select province, 25 wm_concat(city || chr(10)), 26 wm_concat(city || chr(13)), 27 wm_concat(city || chr(9)) 28 from province_city 29 group by province; 30 31 --里面的子信息会按照一行一列的方式进行排列。