1、字符函数
1.1、lower(列名|表达式)字符转小写
select lower('AAA') from dual;
1.2、upper(列名|表达式)字符转大写
select upper('aaa') from dual;
1.3、initcap(列名|表达式)将字符开头字母转大写其余转小写
select initcap('aaAa') from dual;
1.4、concat(列名|表达式,列名|表达式)字符串连接函数
select concat('aaa','bbb') from dual;
1.5、substr(列名|表达式,m,[n])字符串截取函数
select substr('aa1133',0,3) from dual;
1.6、length(列名|表达式)获取字符串长度函数
select length('aa1133') from dual;
1.7、instr(列名|表达式)查找字符的位置函数
select instr('aa1133','1') from dual;
1.8、trim([leading|trailing|both])从字符串中的头部和尾部去掉指定的字符
select trim('?'from'??abc??') from dual;
1.9、去掉空格
select ltrim(' aaa ') from dual;--去掉左空格
select rtrim(' aaa ') from dual;--去掉右空格
select trim(' aaa ') from dual;--去掉空格
1.10、replace(列名|表达式,列名|表达式,列名|表达式)字符替换
select replace('abc','b','@') from dual;
1.11、translate字符转换函数
select translate('abc','b','xx') from dual;
1.12、lpad [左添充] rpad [右填充](用于控制输出格式)
select lpad('func',6,'=') s1, rpad('func',6,'-') s2 from dual;
2、数学函数
2.1、round(列名|表达式,n)四舍五入到小数点后的n位
select round(198.89,1) from dual;
2.2、trunc(列名|表达式,n)截取到小数点后的n位
select trunc(198.89,1) from dual;
2.3、mod(m,n)取余数
select mod(8,3) from dual;
3、日期函数
3.1、sysdate返回系统时间
select sysdate from dual;
3.2、add_months(time,months)函数可以得到某一时间之前或之后n个月的时间
select add_months(sysdate,-6) from dual;
3.3、last_day(d):返回指定日期所在月份的最后一天
select last_day(sysdate) from dual;
4、转换函数
4.1、to_date(列名|表达式,m)字符转日期
select to_date('2015-05-12 11:21:00','yyyy-mm-dd hh24:mi:ss') from dual;
4.2、to_char(列名|表达式,m)日期转字符
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
4.3、to_number(列名|表达式) 转换为数字类型
select to_number(to_char(sysdate,'hh12')) from dual;
5、其它
5.1、decode[实现if ..then 逻辑] 注:第一个是表达式,最后一个是不满足任何一个条件的值
select decode(u.status,'0','不可用','1','可用','其它') status from users u where rownum <=10;
5.2、case when[实现switch ..case 逻辑]
select (case when u.status = '0' then '不可用'
when u.status = '1' then '可用'
else '其它'
end) as status from users u where rownum <=10;
5.3、nvl(列名|表达式,列名|表达式) 第一个值为空则返回第二个值,否则返回第一个值
select nvl(u.name,'请填写名字') from users u where rownum <=10;
5.4、nvl2(列名|表达式,列名|表达式,列名|表达式) 如果第一个值不为空,显示第二个值,否则显示第三个值
select nvl2(u.name,u.name,'请填写名字') from users u where rownum <=10;
5.5、nullif(列名|表达式,列名|表达式) 值相等返空,否则返回第一个值
select nullif('2','1') as value1,nullif('1','1') as value2 from dual;
5.6、返回登录的用户名称
select user from dual;
5.7、coalesce 返回列表中第一个非空表达式
select coalesce(null,null,'1','2',null) from dual;
6、分页查询,需要引入一个rownum的函数
6.1、使用rownum嵌套查询
select * from ( select e.* , rownum as rn from emp e where rownum <= 10 ) t where t.rn >= 1
6.2、方法一的另一种写法
select * from ( select e.* , rownum as rn from emp e) t where t.rn >= 1 and t.rn <=10;
6.3、使用分析函数row_number
select * from ( select t.* , row_number() over(order by ename) as rn from emp t ) where rn>=1 and rn<=10
6.4、使用rowid
select * from emp where rowid in ( select rid from (select rowid as rid, rownum as id from emp t where rownum < 15) where id >= 10 );
6.5、使用minus
select * from emp where rownum <= 15 minus select * from emp where rownum < 10;