Oracle中的单行函数

字符串函数:

注意SUBSTR 如果向要从后向前截取,可以使用负数来表示

例如:SUBSTR('helloword',-3),表示截取最后三个字符,不写长度.默认从开始截取到字符串的末尾.

以上函数除了INITCAP以外都可以在mysql中使用

程序中的字符串,下标从0开始,数据库中的下标从1开始,Oracle中,如果下标写0.则按照1处理,在mysql中,不会返回任何结果

数学函数

注意,ROUND,和TRUNC函数都可以是用以下格式ROUND(889.99,-2) 这样中格式,小数位数可以是负数,当小数位数是负数时,例子中的结果是900

在mysql中没有TRUNC函数,有功能相同的TRUNCATE函数,用法也和Oracle中的TRUNC函数相同.

时间函数

在日期中有如下三个操作:

  日期+数字=日期(表示若干天之后的天数)

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

  日期-日期=天数(表示两个日期相差多少天)

但是这种计算的结果不精确,在oracle中不精确,在mysql中结果会是一种错误的结果

所以给出以下日期函数

使用日期函数进行日期的计算会很精确,但是以上的函数在mysql中只有LAST_DAY可以使用

 转换函数

以上函数在mysql中不存在,只有Oracle中有

例如我想要将现在的时间转换成字符串

SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;

我们也可以从日期中获取年.月,日

SELECT TO_CHAR(SYSDATE,'yyyy') from dual;

 还可以用来格式化数字

SELECT TO_CHAR(5635192189372198731,'999,999,999,999,999,999,999,999,999') FROM dual;

数字9.是任意数字的标记,在格式化数字或者货币的时候,定义的格式的字符串中,标记的位数必须大于需要转换的数据的位数

货币的转换

本地货币的标记是L,任意数字的标记是9

通用函数

NAL函数

如果我们要查询员工表中,员工的编号,员工的姓名,员工的年薪(  年薪=(月薪+绩效)*12  )

但是有些员工没有绩效,这样的话,最后返回的结果,没有绩效的员工就没有年薪

命令:select empno,ename,(sal+comm)*12 INCOME from emp;

这时候我们就可以使用NVL函数

命令select empno,ename,(sal+NVL(comm,0))*12 INCOME from emp;

DECODE函数,这个函数比较重要,面试的时候可能会被问到

完整的员工信息如下:

如果我们想要查询员工编号,员工姓名,员工的job,但是员工的job名称却是英文,我们看着不太好看,想要将其显示为中文

命令: Select empno,ename,job,DECODE(job,'CLERK','办事人员','SALESMAN','销售人员','MANAGER','经理','--') 职位 From emp ;

原文地址:https://www.cnblogs.com/zqr99/p/7664316.html