字符串函数:
注意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 ;