oracle不属于单行函数的特征,Oracle中必须会的几个单行函数

Oracle的单行函数:①字符函数②日期函数③转换函数④通用函数

@字符函数:主要进行字符串的操作

upper(): 变为大写返回;

lower(): 变为小写返回

initcap(): 开头首字母大写

length(): 求出字符串的长度

replace():进行替换

substr():字符串截取

范例1:观察转大写的函数

select upper('hello') from dual ;

用途:select * from emp where ename='&str';

此时如果输入的小写 则无法查询出结果,

不能要求用户这么多,只能由程序适应;

改进:select * from emp where

ename=upper('&str');

范例2:转小写的操作

select lower('HELLO') from dual ;

范例3:查询每个雇员名字使首字母大写的操作

select initcap(ename) from emp ;

范例4:查询每个雇员名字的长度

select ename,length(ename) from emp ;

范例5:查询雇员名字长度正好是5的雇员信息

select * from emp where length(ename)=5 ;

范例6:使用字母_替换姓名中的A

select replace(ename,'A','_') from emp

范例7:字符串的截取substr(字符串|列,开始点)|| substr(字符串|列,开始点,结束点)

select ename , substr(ename,3) from emp ;//下标0和1是一样的

select ename , substr(ename,0,3) from emp ;

范例8;截取雇员姓名的后3个字母

正常思路:通过长度减3 确定开始点

select ename,substr(ename,length(ename)-2) from emp ;

新思路:设置负数,表示从后截取

select ename , substr(ename,-3) from emp ;

面试题:substr函数截取的时候下标是从0还是1开始的?

在Oracle中substr函数从0或1开始都是一样的;

数字函数:3个;

round(数字|列[保留小数的位数])函数 四舍五入

trunc(数字|列[保留小数的位数])函数 舍弃指定位置的内容

mod(数字1,数字2)函数 取摸,去余数;

范例1:验证round()函数

select round(903.5) from dual ;

select round(903.53456) from dual ;

select round(903.5),round(-903.5678),

round(903.54678,2),round(903.522,-1) from dual ;

范例2:验证trunc()函数

select trunc(903.5),trunc(-903.5678),

trunc(903.54678,2),trunc(903.522,-1) from dual ;

范例3:验证mod()函数

select mod(10,3) from dual ;

日期函数:

范例1:取得当前的日期

select sysdate from dual ;

计算公式:

日期+数字=日期; 表示若干天后的日期

select sysdate+3,sysdate+300 from dual;

日期-数字=日期; 表示若干天前的日期

select sysdate-3,sysdate-300 from dual;

日期-日期=数字: 表示2个日期之间的天数

select ename,hiredate,sysdate-hiredate from emp ;

操作函数:

last_day(日期):求出指定日期的最后一天

范例:求出本月的最后一天

select last_day(sysdate) from dual ;

next_day(日期,星期数):求出下一个指定星期X的日期;

范例:求出下个周一

select next_day(sysdate,'星期一') from dual ;

add_months(日期,数字):求出若干月之后的日期

范例:求出毕业时间

select add_months(sysdate,5) from dual ;

months_between(日期1,日期2):求出2个日期之间的月份

范例:求出每个雇员到今天位置的雇佣月份

select ename,hiredate,trunc(months_between(sysdate,hiredate)) from

emp ;

select ename,hiredate,trunc(months_between(sysdate,hiredate)/12)

from emp ;

转换函数(核心)

to_char(字符串|列,格式字符串):将日期或者是数字变为字符串显示

to_date(字符串,格式字符串):将字符串变为date数据显示

to_number(字符串):将字符串变为数字显示

范例:to_char()函数

select to_char(sysdate,'yyyy-mm-dd')

,to_char(sysdate,'yyyy'),

to_char(sysdate,'mm'),to_char(sysdate,'dd')from dual ;

//fm格式化

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

select to_char(sysdate,'fmyyyy-mm-dd hh24:mi:ss') from dual ;

to_char()函数也可用于格式化数字 L 表示的是Local所在语言环境下的货币

select to_char(487584758,'L999,999,999') from dual ;

范例:to_date()函数 将字符串变为date的;

select to_date('2012-09-05','yyyy-mm-dd') from dual ;

范例:to_number()函数 将字符串变为数字

select to_number('1')+to_number('2') from dual ;

不是用也可完成

select t'1'+'2' from dual

通用函数:

nvl():处理null

要求查询出每个雇员的全部年薪

select ename,sal,comm,(sal+comm)*12 from emp ;

有些雇员的年薪编程了null,原因是comm字段 解决:将null变为0

select ename,sal,comm,(sal+nvl(comm,0))*12,nvl(comm,0) from emp

;

decode():多条件 多数值判断 类似于if else 语句

显示全部雇员的职位,但是职位替换为中文

CLERK -- 办事员

SALESMAN -- 销售

MANAGER -- 经理

ANALYST -- 分析师

PRESIDENT -- 总裁

select ename,job,decode(job,'CLERK','办事员',

'SALESMAN','销售','MANAGER',

'经理','ANALYST',

'分析师','PRESIDENT','总裁') from emp ;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值