【Oracle】单行函数

单行函数

字符串函数
1.UPPER(列|字符串) 字符串 传入的字符串变成大写
2.LOWER(列|字符串) 字符串 传入的字符串转小写
3.INITCAP(列|字符串) 字符串 首字母大写其他全小写
4.LENGTH(列|字符串) 数字 获得字符串的长度
5.SUBSTR(列|字符串,开始索引,[长度]) 字符串 截取指定的字符串若没有设置长度则截取到末尾
6.REPLACE(列|字符串,旧内容,新内容) 字符串 指定字符串内容替换

在Oracle中提供了空的dual表来练习。

下面列出几个注意要点:
因为用户在进行信息查询的时候往往不会区分大小写,所以使用如下方法解决:
例:由用户输入名字查询雇员:
SELECT * FROM emp WHERE ename=UPPER(‘&inputname’);
在这里插入图片描述
一般在一些不区分数据大小写的情况下,会将数据内容全转为大写或者小写处理。

在其他程序中,字符串开头的索引都是0,但是在Oracle中,首字母的索引是1,即便设置为了0也会按1来处理。
在这里插入图片描述
在这里插入图片描述
截取字符从后往前截取:
在Oracle里,可以设置开始索引为负数表示从后往前多少位。
在这里插入图片描述
这类设置方式只有Oracle里才有。

数值函数
主要进行数字处理
ROUND(列|数字,[小数位]) 数字 数据四舍五入,可以设置保留小数位,没设置则取整数,如果设置为负数则进行整数位的四舍五入。

TRUNC(列|数字,[小数位]) 数字 数据的截取,即不进位,没设置则取整数,设置为负数则直接取高位的整数,如688直接取为600。

MOD(列|数字,列|数字) 数字 求余数。

如果见到了round单词一般表示四舍五入。

日期函数
日期格式:‘x-xx月-xx’; //日-月-年;
处理日期有个基本前提:知道当前的日期。在Oracle里提供了一个伪列(可查询但不真正存在)“SYSDATE”(SYSTIMESTAMP)。

SELECT SYSDATE FORM dual;
熟悉三个日期的操作公式:
日期+数字=日期 //若干天后的日期
日期-数字=日期 //若干天前的日期
日期-日期=数字 //天数

因为每个月天数不同,直接进行天数加减操作不准确,在Oracle里提供了4个处理日期的函数:

ADD_MONTHS(列|日期,月数) 日期 增加若干个月后的日期
MONTHS_BETWEEN(列|日期,列|日期) 数字 返回两个日期之间所经历的月数(当前日期写在前面)
LAST_DAY(列|日期) 日期 取得指定日期所在月的最后一天
NEXT_DAY(列|日期,星期X) 日期 返回下一个指定周天对应的日期
例:
找出雇佣日期是雇佣月倒数第3天的雇员信息:
SELECT * FROM emp WHERE HIREDATE = LAST_DAY(HIREDATE)-2;

一般来说,日期函数的操作过程比较麻烦,但是有一个前提:利用日期函数操作是最准确的。

求出年份:
select trunc(months_between(sysdate,hiredate)/12) 雇佣年限 from emp;
在这里插入图片描述
求出雇佣日期到现在除了年月的天数
SELECT TRUNC(SYSDATE-ADD_MONTHS(HIREDATE,MONTHS_BETWEEN(SYSDATE,HIREDATE))) day FROM emp;
在这里插入图片描述
转换函数
数字型,字符串型,日期型转换需要使用到转换函数。
TO_CHAR(列|日期|数字,转换格式) 字符串 将日期数字格式化为指定结构的字符串
TO_DATE(列|字符串,转换格式) 日期 按指定的转换格式变化为日期型格式
TO_NUMBER(列|字符串) 数字 将字符串变为数字

想将日期和数字变为字符串,首先必须清楚转换格式的标记。
1.日期标记 年(yyyy)、月(mm)、日(dd);
2.时间 时(hh、hh24)、分(mi)、秒(ss);
3.数字 任意数字(9)、本地货币符(L);

例:
将日期显示格式化
SELECT TO_CHAR(SYSDATE,’yyyy-mm-dd’) from dual;在这里插入图片描述
TO_CHAR()最强悍的功能就是可以实现日期数据的拆分。
例 实现日期数据的拆分:
在这里插入图片描述
eg:查询出在2月份雇佣的员工:
SELECT ename FROM emp WHERE TO_CHAR(HIREDATE,’MM’)=2;
在这里插入图片描述
Oracle中有自动转型的操作,如果发现类型不匹配会自动完成类型的转换操作。
eg:将数字格式化:
SELECT TO_CHAR(1234412,‘L999,999,999,999’) from dual;
在这里插入图片描述
转换日期函数:
eg:完成日期转化操作:
在这里插入图片描述
一般意义不大,在实际操作中只有第一种转型函数用的广泛。

通用函数
一般指Oracle的特色函数
1.NVL(列|NULL,默认值) 数字 如果传入的内容是空则用默认数字处理,如果不是空则使用原始数据。
2.DECODE(列|字符串|数值,比价内容1,显示内容1,比较内容2,显示内容2,…[默认显示内容]) 数据类型 设置的内容会与每一个比较的内容进行比较,如果内容相同则使用显示内容输出,如果都不同则使用默认内容输出。(比较内容与显示内容一同出现)

观察下面的查询语句:
SELECT ename,sal,comm,(sal+comm)*12 FROM emp;
在这里插入图片描述
发现计算后没有 佣金的员工没有了年薪,因为佣金是NULL,而NULL进行计算还是NULL,这时为了计算的准确性,必须将NULL替换为0;
改正后:
SELECT ename,sal,comm,(sal+NVL(COMM,0))*12 FROM emp;
在这里插入图片描述
DECODE()类似于if else,但是与之不同的是此处不能判断关系,只能判断内容是否相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值