oracle java函数_Oracle函数

函数

Oracle的函数分单行函数与多行函数

单行函数:只影响一行数据

多行函数:影响多行数据

字符函数

大小写转换:

LOWER

UPPER

INITCAP

字符处理函数:

CONCAT

SUBSTR

LENGTH

INSTR

LPAD | RPAD

TRIM

REPLACE

select empno,lower(ename) from emp;

select empno,upper(ename) from emp;

select empno,initcap(ename) from emp;

select empno||ename from emp;

select concat(empno,ename) from emp;

select concat(empno,'aa') from emp;

select ename,substr(ename,1,3) from emp(1代表从第几个字母开始,3代表截取的长度)

select ename,length(ename) from emp;(返回字符串的长度)

select ename,instr('string',r) from emp;(这个字符串中的r第一次出现的位置,位置从一开始,java中从0开始)

select empno,lpad(empno,10,'*') from emp;(定义字符长度10位,不足的地方补上*号,rpad是又面补)

select ename,trim(ename) from emp;(去掉字符串中的空格)

select ename,length(trim(ename)) from emp;(去掉字符串中的空格,得到字符串的真正长度ltrim只去左边的,rtrim只去右边的,注意中间的空格去不掉)

select replace(ename,'A','a') from emp;(把大写A替换成小写a)

数字函数

ROUND

TRUNC

MOD

select sal,rround(sal,2) from emp;(四舍五入到指定位2代表保留几位)

select sal,round(sal) from emp;

select sal,trunc(sal,2) from emp;(小数点后截位2代表截的位数)

select sal,mod(sal,100) from emp;(取余数计算,100代表对多少取余数)

转换函数(字符串,数字,日期转换)

数字类型转换

隐含的数字类型转换

显式的数字类型转换(建议尽量使用)

to_char

to_number

to_date

to_char

日期类型转成字符格式

select sysdate from dual;

select to_char(sysdate,'yyyy-mm-dd-dd HH:Mi:ss') from dual;

select to_char(sysdate,'fmyyyy-MM-dd') from dual;

select to_char(sysdate,'yyyy-MM-dd')+1 from dual;

select to_char(sysdate,'year month dy day') from dual;

to_char(sysdate,'dy') from dual;(dy表示3个字母缩写)

日期格式基础:

时间格式作为日期的一部分

HH24:MI:SS:AM     15:45:32 PM

用双引号括起来以加字符串

DD"of"MONTH       12 of OCTOBER

数值拼写

ddspth            fourteenth

数值转换

9  代表一个数字

0  强制为0

$  设置美元符号

L  使用当前字符集货币符号

.   小数点

,千位分隔符select to_char(sal,'999,999,999,999,999') from emp;

select to_char(sal,'000,000,000,000') from emp;

select to_char($sal,999,999,999) from emp;

seelct to_char(Lsal,999,999,999) from emp;

select sal,to_number(to_char(sal,'999999.999')) from emp;

select to_date('2008-01-01','yyyy-MM-dd')+10 from dual;

日期类函数

MONTHS_BETWEEN 两日期相差多少月

ADD_MONTHS 加月份到日期

NEXT_DAY 指定日期的下一天

LAST_DAY 一个月中的最后一天

ROUND Round日期

TRUNC Truncate日期

select empno,hiredate,sysdat-hiredate from emp;()

select empno,hiredate,months_between(sysdate,hiredate)

from emp;()

select add_months(sysdate,2) from dual;(加两个月)

select add_months(sysdate,-2) from dual;(减两个月)

select next_day(sysdate,2) from dual;(2代表)

select last_day(sysdate) from dual;()

select round(sysdate) from dual;(日期的四舍五入)

select trunc(sysdate) from dual;()

select trunc(sysdate,'01-1月-98') from dual;

select round(sysdate,'MONTH') from dual;

select trunc(sysdate,'year') from dual;

其他函数

将空值转换为实际值

NVL

NVL2

select empno,ename,job,sal,comm,nvl(comm,0) from emp;

select empno,ename,job,sal,comm,nvl2(comm,'sal+comm','sal')

from employees where department_id in(50,80);

NULLIF

COALESCE 返回一个非空的表达式

CASE

select empno,ename,sal,case

when sal<1000 then '小于1000'

when sal>=1000 and sal<2000 then '介于1000到2000之间'

when sal>=2000 and sal,3000 then '介于2000到3000之间'

else '大于3000'

end

from emp;

DECODE 类似于case或if(相等的情况)

select empno,ename,sal,decode(sal,1000,'大于1000') from emp;

select empno,ename,deptno,decode(deptno,20,'技术部',30,'财务  部',10,'办公室') from emp;

函数嵌套

select empno,rpad(lpad(empno,6,'GB'),9,'_01') from emp;

分组函数

AVG 平均值

COUNT 统计表里的记录

MAX 最大值

MIN 最小值

SUM 总和

select max(sal),min(sal),avg(sal),sum(sal) from emp;select max(sal),min(sal),avg(sal),sum(sal) from emp

where deptno=10;

select count(*) from emp;

seelct count(empno) from emp;

count排除空值,在进行sum运算时,将空值去掉

insert into test(select * from test);(把表的数据插入另个表)

select avg(sal) from emp;

select avg(nvl(sal,0)) from emp;

GROUP BY子句

select deptno,max(sal),min(sal),sum(sal),avg(sal)

from emp group by deptno

order by deptno desc;

select emptno,ename,job,deptno from emp

group by job,empno,ename,deptno;

select deptno,avg(sal) from emp

group by deptno

having avg(sal)>2000;

select deptno,avg(sal) from emp

group by deptno

having avg(sal);

select deptno,avg(sal) from emp

group by deptno

having avg(sal)>(select avg(sal) from emp);

select name

case subject

when '数学' then score else 0 end 数学,

case subject

when '语文' then score else 0 end 语文,

case subject

when '英语' then score else 0 end 英语

from stu

group by name,subject,score;

select name 姓名,

sum(case subject

when '数学' then score else 0 end) 数学,

sum(case subject

when '语文' then score else 0 end) 语文,

sum(case subject

when '英语' then score else 0 end) 英语

end)

from stu

group by name;

HAVING子句: 限定组的结果

嵌套组函数

select max(avg(salary)) from employees

group by departement_id;(组函数最多嵌套两层)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值