常见函数用法
1.NVL函数
定义:从两个表达式返回一个非 null 值。
语法:NVL(eExpression1, eExpression2)
如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 NULL。
返回值类型:字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值
说明:在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。
select nvl(a.name,‘空得’) as name from student a join school b on a.ID=b.ID
注意:两个参数得类型要一致。
2.last_day()
定义:返回指定日期所在月份的最后一天;
2.1查询当前月份的最后一天:
select last_day(sysdate) from dual;
2.2查询某天所在月份的最后一天:
select last_day(to_date('1992-10-09','yyyy-mm-dd')) from dual;
2.3查询当前时间,当前月的最后一天,距离这个月还有多少天:
SELECT SYSDATE,
LAST_DAY(SYSDATE) "Last",
LAST_DAY(SYSDATE) - SYSDATE "Days Left"
FROM DUAL;
3.add_months(times,months)
3.1查询当前时间1个月以前的时间:
select add_months(sysdate,-1) from dual;
3.2查询当前时间1个月以后的时间:
select add_months(sysdate,1) from dual;
4.initcap()
4.1.首字母转大写之后的小写
select initcap(abcd) from dual; --结果为Abcd;
5substr(string string, int a, int b)
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", -3, 3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。
6.to_date和to_char用法总结
6.1.to_char用法
1.语法:to_char(日期,'日期格式‘)
2.作用:将日期通过指定格式进行字符串转换,转换成字符串类型
将当前系统时间转换成(yyyy-mm-dd hh:mi:ss day)格式。
select to_char(sysdate , 'yyyy-mm-dd hh:mi:ss day') from dual;
把hiredate列看做是员工的生日,查询本月过生日的员工(考察知识点:单行函数)
select * from employees where to_char(hire_date,'mm')=to_char(sysdate,'mm');
6.2.to_date用法
1.语法:to_date(字符串,'日期格式’)
2.用法:将字符串通过指定格式进行日期转换,转换成日期类型
将和日期兼容的字符串按照(yyyy-mm-dd hh24:mi:ss:ff day)转换成日期。
select to_date('19950101','yyyy-mm-dd') as time from dual;
查询入职日期在1997-5-1到1997-12-31之间的所有员工信息:
select * from emp where to_date('1997-5-1','yyyy-mm-dd')<hiredate
and to_date('1997-12-31','yyyy-mm-dd')>hiredate;
6.3.打印自己出生了多少天
select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy/mm/dd')-to_date('1996/10/16','yyyy/mm/dd') from dual;
6.4计算出生那天星期几
select to_char(to_date('1990/03/01','yyyy/mm/dd'),'yyyy-mm-dd day') from dual;//星期四