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 --里面的子信息会按照一行一列的方式进行排列。