SQL 函数
sql函数
character函数 String
1.INITCAP 首字母大小
select initcap(address) address from student;
select initcap('ni hao') from dual; --dual虚拟表 '数据' 列名-数据
2.LTRIM 从左往右截取
select ltrim('ni hao ni', 'ni') from dual; //hao ni
3.RTRIM 从右往左截取
select rtrim(‘hao ni hao', 'hao') from dual; //hao ni
4.CONCAT 并置运算符 ||
select concat(stuNo, concat(' ', name)) from student;
select stuNo || ' ' || name as info from student;
5.SUBSTR subString(str, begin, end)
select substr('nihao hi helloi', 0, 10) from dual; --包括第一位是0,也包括第10位
6.INSTR
select instr('nihao', 'ni') from dual;
7.LENGTH
select length(address) from student;
8.RPAD
insert into school values(rpad(88, 8, '0'), '南京大学');
---------------------------------------------------------------------------------------------------------------------------------
重要:
9.LOWER
select lower('HELLO') from dual;
10.UPPER
select upper('hello') from dual;
String inputEmail = "Bob.wang"; -- 用户名不区分大小写
select * from users where upper(email) = upper(inputEmail);
select * from student where upper(address) = upper('China Wuxi New Area');
11.LPAD -- insert PK 序列sequence
insert into school values(lpad(88, 8, '0'), '江苏大学');
insert into school values('S'||lpad(89, 7, '0'), '江苏科技大学');
---------------------------------------------------------------------------------------------------------------------------------
数值函数 Math
1.ABS 绝对值
select abs(-10) from dual;
2.CEIL >= 最小整数
select ceil(-10.1) from dual;
3.FLOOR <= 最大整数
select floor(-10.1) from dual;
4.POWER 求幂
select power(10, 4) from dual;
5.MOD 取余
select mod(-10, 3) from dual;
6.SQRT 开方
select sqrt(100) from dual;
7.TRUNC 直接截取
select TRUNC(19.99) from dual;
select TRUNC(19.99281, 3) from dual;
8.ROUND 四舍五入
select round(19.99) from dual; -- 20
select round(19.99281, 3) from dual; -- 19.993
日期函数
1.系统时间
select sysdate from dual;
2. ADD_MONTHS
计划 2014-11-25开始project做两个月 得出开始日期 结束日期
select '25-11月-14' as "开始时间", add_months('25-11月-2014', 2) as "结束时间" from dual;
3.GREATEST
select greatest('25-11月-14', sysdate) from dual;
GREATEST 返回值列表中最大值
格式: GREATEST(value1, value2, value3, ...)
含义: 返回value列表最大的值。
Value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
当value值列表中有一个为NULL,则返回NULL值。
4.LEAST
select least('25-11月-14', sysdate) from dual;
LEAST 返回值列表中最小值
格式: LEAST(value1, value2, value3, ...)
含义: 返回value列表最小的值。
value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。
当value值列表中有一个为NULL,则返回NULL值。
5.LAST_DAY 月份最后一天日期
select last_day(sysdate) from dual;
6.MONTHS_BETWEEN返回两个日期之间的月份数。
select MONTHS_BETWEEN('25-11月-14', sysdate) from dual;
7.NEXT_DAY 下一个星期几日期 1~7 日~六
select next_day(sysdate, 6) from dual;
8.ROUND日期中的四舍五入 (上半月;下半月)
select round(sysdate, 'month') from dual;
9.TRUNC 截取
select trunc(sysdate, 'year') from dual; //截取到年份 res:01-01月14
格式化函数
1.隐式转换
此转换类型中,数据类型将根据SELECT语句中函数的要求自动进行转换。
select add_months('10-10月-14', 1) from dual;
select * from school where schoolcode = '00000088';
select * from facutly where facutlyNo = 1; -- 列中数据应为数字的char字符
2.显式转换
此转换类型中,数据类型的转换通过一些预定义函数完成。转换函数有:
日期格式化函数
TO_DATE
insert into student(stuNo, name, birthDate, majorNo)
values('S9722', 'John', to_date('1995-10-10', 'yyyy-mm-dd'), 'M0003');
TO_CHAR
select birthDate from student;
select to_char(birthDate, 'yyyy-mm-dd') from student;
3.数值格式化函数
to_number -- 列中数据应为数字的char字符
select to_number(schoolCode) from school where schoolcode = '00000088';
4. nvl(值1, 值2) 若值1为空 显示值2的数据 若值1不为空显示自身值
select stuNo, name, nvl(javasescore, 60) from student;
5.Coalesce函数 Coalesce (exp_name1, exp_name2….. exp_n) 若表达式值不为空显示
select coalesce('', '', '', '1', 'value') from dual;
/*
* 多行函数
* 把多行数据组合为一行
*/
count 统计 count(*|列名)--列数据为null不参与多行函数操作
select count(*)from student;--有多少学生
select count(javaSEScore)from student;--有多收学生参与考试
select count(*)from student where majorno ='M0001';
sum
select sum(javaSEScore)from student;
select sum(salary)from employee;
avg
select avg(javaSEScore)from student;
max
select max(javaSEScore)from student;
min
select min(javaSEScore)from student;
stddev 偏差
select stddev(javaSEScore)from student;
variance 方差
select variance(javaSEScore)from student;
--select name, count(*)from student