Oracle数据库的函数


总结:1.-- 逐值替换;把表中的数据替换成想要的字符
select ename,decode(deptno,10,'开发部',20,'测试部',30,'维护部') from emp;
-- 计算年龄或者年份差;获取系统年:extract(year from sysdate);得到表里的年:extract(year from hiredate)
select ename,extract(year from sysdate)-extract(year from hiredate) as 工龄 from emp
-- 转换函数;按照什么格式转成字符串;
Select TO_CHAR(0.123,'$0.9999') FROM DUAL;--结果是 $0.1230;就是把0.123按照'$0.9999'转换
-- 把字符串转成日期类型
select to_date('2019-11-11','yyyy-MM-dd') from dual
-- 空值转换函数;对可能存在的空字符串用nvl进行转换,val(comm,0)把空转成0
select ename,(sal+nvl(comm,0))as 工资总和 from emp
-- 值转化,如果comm不是空就是10是空则为0
select ename,(sal+nvl2(comm,10,0))as 工资总和 from emp
--NULLIF()如果两值不一样就是小的值,如果一样就是空
SELECT NULLIF(100,200) FROM DUAL
--分析函数;返回连续的排位,不论值是否相等
select ename,sal,row_number() over(order by sal asc) as 排名 from emp
-- 具有相等值的行排位相同,序数随后跳跃
select ename,sal,rank() over(order by sal asc) as 排名 from emp
-- 具有相等值的行排位相同,序号是连续的
select ename,sal,dense_rank() over(order by sal asc) as 排名 from emp

--授权;创建同义词的权利
grant create synonym to hankai
--授予可以查询删除修改scott.emp的权限
grant select,update,delete on scott.emp to hankai
--创建私有同义词;那个账号创建那个账户用,别的账号不能用 ;(普通账号创建)
create synonym e for scott.emp;-- 给scott.emp起别名 e;用synonym关键字
select * from e
-- 管理员创建的同义词加上public就是公有同义词
-- 创建公有同义词(管理员账号创建)
create public synonym a for scott.emp

原文地址:https://www.cnblogs.com/hankai2735/p/11702829.html