【Oracle11gR2 | 学习】Oracle查询记录时经常用到的函数、条件表达式

学习资料来源于:【Oracle】黑马57期Oracle数据库基础教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

Oracle中很重要的就是查询记录,而查询涉及到诸多函数的使用,主要分为单行函数和多行函数。

单行函数:作用于一行,返回一个值

主要谈5个:字符函数(upper、lower)、数值函数(round、trunc、mod)、日期函数(sysdate)、转换函数(to_char、to_date)、通用函数(nvl())

多行函数:作用于多行,返回一个值

主要谈5个:count、sum、min、max、avg

【代码展示——单行函数】:

--单行函数:作用于一行,返回一个值
--字符函数
select upper('yes') from dual;--YES
select lower('YES') from dual;--yes
--数值函数
select round(56.16,1) from dual;--四舍五入,后面的参数表示保留的位数
select trunc(56.16,1) from dual;--直接截取,不再看后面位数的数字要不要进一
select mod(10,3) from dual;--求余数
--日期函数
--查询出emp表中所有员工入职距离现在几天
select sysdate-e.hiredate from emp e;
--算出明天的此刻
select sysdate+1 from dual;
--算出emp表中所有员工入职距离现在几月
select months_between(sysdate,e.hiredate) from emp e;
--算出emp表中所有员工入职距离现在几年
select months_between(sysdate,e.hiredate)/12 from emp e;
--算出emp表中所有员工入职距离现在几周
select round((sysdate-e.hiredate)/7) from emp e;

--转换函数
--日期转字符串
select to_char(sysdate,'fm yyyy-mm-dd hh24:mi:ss') from dual;--加上fm表示去掉数字前面的0
                                                             --加上24表示用24小时计时法
--字符串转日期
select to_date('2021-5-5 19:25:49','fm yyyy-mm-dd hh24:mi:ss') from dual;
--通用函数
--算出emp表中所有员工的年薪
--奖金里面有null值,如果null值和任意数字做算数运算,结果都是null
select e.sal*12+nvl(e.comm,0) from emp e;

在查看运行结果时,使用工具来查看所有获取的值,因为窗口的大小会限制显示的行数,不可简单认为所显示的就是所有的结果。

其余函数还需通过操作手册来查询,于是找了一个合集如下,希望自己有事没事可以多翻一翻。

(32条消息) 关于ORACLE数据库常用官方文档_一个不愿透漏姓名的绝世强者-优快云博客_oracle数据库文档

【代码展示——多行函数】

--多行函数:作用于多行,返回一个值
select count(1) from emp;--查询总数量,和count(主键empno)效果一样
select sum(sal) from emp;
select min(sal) from emp;
select max(sal) from emp;
select avg(sal) from emp;

条件表达式此处学习了一条,

【代码展示——条件表达式】:

--条件表达式
--条件表达式的通用表达式,即在mysql和oracle中都可使用
--给emp表中的员工起中文名
--等值判断的写法
select e.ename,
       case e.ename
         when 'SMITH' then '小华'
           when 'ALLEN' then '小强'
             when 'WARD' then '小付' 
               else ''
                 end
from emp e;
--判断emp表中员工工资,如果高于3000显示高收入,如果高于1500低于3000显示中等收入,其余低收入
--范围判断的写法
select e.sal,
       case
         when e.sal>3000 then '高收入'
           when e.sal>1500 then '中等收入'
             else '低收入'
               end
from emp e;
--oracle专用表达式
--oracle中除了起别名,都用单引号
select e.ename,
       decode(e.ename,
         'SMITH' , '小华',
           'ALLEN' , '小强',
             'WARD' , '小付' ,
               '') "中文名"
from emp e;
--以下无法使用
select e.sal,
       decode(e.sal>3000,'高收入',
         e.sal>1500,'中等收入',
               '低收入') "工资水平"
from emp e;

值得注意的是,在最后一处decode使用处,运行总是出错,于是通过查询手册,发现了这样一段话:

【DECODE compares expr to each search value one by one. 】

也就是说该函数无法使用在范围判断的写法中(若错误,请指正)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值