select * from dual;--dual是为了查询的语法规则存在的
--日期函数
select add_months(sysdate,2) from dual;
select months_between(sysdate,'3-8月-2011') from dual;--返回类型为小数
select last_day(sysdate) from dual; --返回类型为date当月最大天数
select round(sysdate,'dd')from dual; --四舍五入 按天 这个月是否过来一半 只要过了15就是30 否则变成1
select round(sysdate,'mm')from dual;
select round(sysdate,'yyyy')from dual;
select next_day(sysdate,'星期一') from dual;--下个星期一是多少号(中文oracle用中文,英文版的不可以用缩写)
select next_day(sysdate,'星期日') from dual;
select trunc(sysdate,'dd') from dual;--精确到
select trunc(sysdate,'mm') from dual;
select extract(year from sysdate) from dual;--截取 返回number型
--字符函数
select trim(' d ') from dual;--1.去空格 2.去指定字符
select trim('1' from '1111dfsf1111') from dual;
--三个替换函数
select translate('abcded','cd','io') from dual;--替换满足其中的一个,替换相应的一个(部分模糊替换)
select replace('abcded','cd','io') from dual;--部分精确替换
select decode('abcded','cd','io') from dual;--完整的字符精确替换(全部精确替换)
select substr('abcde',2,3) from dual;--oracle的索引从1开始 第三个参数是截取多长
select instr('abcdef','a') from dual;--相当于java的indexOf 如果没有第三参数默认从第一个参数开始找
select chr(97)from dual;--参数只能转ascii码(0-127)
select ascii('A')from dual;
selec lpad('',,'') from dual;--不足为补第三参数
select length('中国') from dual;--单位为字 -->2
--数学函数
ceil()--大于或等于本身的最小整数
floor()--小于或等于本身的最大整数
select to_date('2001-1-1 12:32:23','yyyy-mm-dd HH:mi:ss') from dual;
--转换空值的函数
nvl nvl2 nullif
NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1
NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1