Oracle当中有个虚拟表:dual。可以返回一行对字符串进行验证。
字符函数:
select upper('hello') from dual //转大写
select lower('HUANG') from dual//转小写
select initcap('bnmf') from dual//第一个字母大写
select length('df') from dual;//字符的长度
select replace('abc','a','w') from dual//替换‘a’为‘w’
select substr('abcdefghi', 5) from dual//从第五个字符开始截取到末尾
select substr('abcdefghi', 5, 7) from dual//从第五个字符开始截取到第七个
select substr('abcdefghi', -2) from dual//截取整数倒数第二个字符
数字函数:
select round(45.1254) from dual//四舍五入,直接取得整数部分
select round(45.1254,2) from dual//四舍五入,保留两位小数
select round(-45.1244,2) from dual//四舍五入,保留两位小数
select round(123.56,-2) from dual//直接从整数部分开始,舍入
select trunc(123.4544543) from dual//截取整数部分
select trunc(123.4544543,4) from dual//从小数第四位开始截取
select trunc(-123.4544543,4) from dual//从小数第四位开始截取
select trunc(123.4544543,-2) from dual//从整数倒数第二位开始截取
select MOD(12,5) from dual//取模运算
日期函数:sysdate是oracle里面的当前日期
select sysdate from dual
select sysdate+3,sysdate+365 from dual//日期+数字=日期。表示多少天后的日期
select sysdate-3,sysdate-365 from dual//日期-数字=日期。表示多少前的日期
select sysdate-hiredate from emp//日期-日期=天数。表示两个日期之间相差多少天
select last_day(sysdate) from dual//当前日期所在月份的最后一天,返回的是个日期
select next_day(sysdate,'星期三') from dual//当前月份的下一个星期三,返回的是日期
select add_months(sysdate,4) from dual//4个月后的日期,返回的是日期
select months_between((sysdate+62), sysdate) from dual//两个日期之间的月份数,返回的是数字
格式化函数
select to_char (sysdate, 'yyyy-mm-dd') from dual//把日期按照指定规则格式化
select to_char('32324342342','9999,9999,9999,9999') from dual//把指定数字格式化
select to_date('1999-01-02', 'yyyy-mm-dd')from dual//把字符串变为日期
转换函数:(两个很重要)
select ename,nvl(comm,0) from emp//nvl函数,如果comm为空则默认为是0
select ename,job,decode(job,'CLERK','办事uyan','SALESMAN','经理') from emp//decode函数,相当于if…else.判断job是‘clerk’给定值是“办事员”;job是'SALESMAN'给定的值是’经理’