一.日期函数
1. add_months(date, num);
2 months_between(date1,date2) 返回可能是整数,也可能是小数
3 last_day(date) 返回日期当天的最后一天
4 round(date, [fmt]) 返回日期值,四舍五入到指定的单位
eg.
select round(sysdate,'year') from dual
5 next_day(date, day) 返回指定的下一个星期几的日期
eg. select next_day(sysdate, '星期日') from dual
6 trunc(date,[fmt]) 返回指定格式截断的日期
eg . select trunc(sysdate,'year') from dual
7 extract(fmt from date) 函数提取日期时间类型中指定的部分
eg select extract(year from sysdate) from dual;
二、字符函数
1 initcap(char) 首字母大写
2 lower(char) 转换为小写
3 upper(char)转换为大写
4 ltrim(char, [set]) 左剪切
5 rtrim(char,[set])右剪切
6 trim(char) 剪切
eg . select trim('9' from '990gfdsg889') from dual 返回 0gfdsg88
7 translate(char, from, to)按字符翻译
eg. select translate('addgxx','abcd','1234') from dual 返回 144gxx
8 instr(char, substr,[pos]) 查找子串位置
eg. select instr('addgxx','a') from dual 返回 1
9 substr(char, pos, len) 取子串
10 concat(char1,char2) 连接字符串
11 chr(num) 返回ascii相应的字符
eg. select chr(65) from dual 返回A
select ascii('a') from dual 返回97
12 lpad(char, target_len, fill_char) 左填充
eg. select lpad('ffadd',10,'*') from dual 返回 *****ffadd
13 rpad(char, target_len, fill_char) 右填充
14 length(char) 返回字符串长度
eg. select length('ddff中文') from dual 返回6
一个数据库表,列类型威varchar2, 当数据库编码GBK 时, 一个汉字占2个字节,当数据库编码为UTF-8时, 一个汉字占3个字节, length函数中一个汉字长度为1
15 decode(expression,search1,result1, search2, result2,[defualt])
eg.
select decode(id,1,'一','2','二') from test_table
二、数学函数
1. abs(n) 绝对值
2. ceil (n) 向上取整
select ceil(556.44) from dual 返回557
3. floor(n) 向下取整
4. round(m,n) 四舍五入
eg. select round(556.44,-1) from dual 返回 560
select round(556.44,1) from dual 返回 556.4
5. trunc(m,n) 数字截断
eg. select trunc(556.44,1) from dual 返回 556.4
select trunc(556.44,-1) from dual 返回550
三、转换函数
1. to_char(date|num,[fmt])
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
2. to_date(char,[fmt])
3. to_number(char)
4. nvl(expr1,expr2) 如果nvl为null返回expr2,否则返回expr1
5. nvl2(expr1,expr2,expr2) 如果expr1不为null返回expr2,如果为null,返回expr3
6. nullif(expr1,expr2) 如果两个表式相等返回null,如果不相等返回expr1
四、分析函数:
1.row_number() over ([partition by column_name] order_by_clause ) 返回连续排名
2.rank() over ([partition by column_name] order_by_clause )排名可能跳跃
3.dense_rank() over ([partition by column_name] order_by_clause )排名可能重复
eg. 对员工的工资按部门进行排序
select e.*, dense_rank() over(partition by deptno order by sal) as sal_rank from scott.emp e order by empno