1.设置只读事务
set transaction read only; --必须为连接用户后的第一条事务管理语句,即之前不能有增删改等操作
字符函数
1.lower upper length substr replace instr
select lower(ename) from emp;
select upper(ename) from emp;
select ename from emp where length(ename)=5; --显示名字长度为5 的员工名字
select substr(ename,2,3) from emp; --从第2个字符取,总共取3个字符
select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp; --第一个字母大写,其余小写
注意,oracle中连接字符不能用+ ,而是用 || .
select replace(ename, search_str, replace_str) from emp;
select replace(ename, 'A', '老鼠') from emp;
select instr(ename, 'I') from emp where ename='SMITH'; --搜索字串的位置,找不到返回0;
数学函数
round -- 四舍五入
select ename, sal, round(sal,-1) from emp where ename='JONES';
trunc -- 直接截取
select ename, sal, trunc(sal, -2) from emp;
select ename, sal, trunc(sal, 1) from emp; --保留一位小数
floor --取比参数小的整数
select ename, sal, floor(sal) from emp;
ceil --取比参数大的整数
select ename, sal, ceil(sal) from emp;
select ceil(10.2) from dual;
mod --去模求余数
select mod(9,2) from dual;
abs --返回绝对值
select abs(-10) from dual;
日期函数
select sysdate from dual; --返回系统时间
select ename, (sysdate-hiredate) from emp; --显示入职的天数
select ename from emp where sysdate>add_months(hiredate,8); --入职时间大于8个月的员工
select ename, hiredate,last_day(hiredate) from emp; --显示单月的最后一天
select * from emp where last_day(hiredate)-9<hiredate; --显示单月最后十天入职的员工
转换函数--完成数据类型间的转换
oracle能进行隐含转换
如将数字隐含转换为字串,也可将字串隐含转换为数字
to_char 函数
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; --hh24, hh12
select to_char(33.45,'L999.99') from dual; --显示本地货币符号
select to_char(34562.54,'L99,999.99') from dual;
select to_char(34562.54,'$99,999.99') from dual;
select ename, hiredate from emp where to_char(hiredate,'yyyy')=1980; --显示1980年入职yuangong
select ename, hiredate from emp where to_char(hiredate,'mm')=12; --显示12月份入职员工
系统函数 sys_context
select sys_context('USERENV', 'db_name') from dual; --当前数据库
select sys_context('USERENV','session_user') from dual; --当前用户
select sys_context('USERENV','language') from dual; --当前语言
select sys_context('USERENV', 'current_schema') from dual; --显示当前方案名
注意: 方案名与用户名一样