lower ('ABC') //转小写
upper('abc') //转大写
initcap('abc') //首字母大写
concat('abc','def') //连接字符串 同||
substr('string',1,3) //str 取子串
length('st个') //3 长度
instr('string','r') //3 返回第一次出现的位置,没有找到返回0
lpad('sss',5,'*') //**sss 长度格式化
round(45.926,2) //45.93 四舍五入
round(45.926,-1) //50
trunc(45.235,2) //45.23 取小数
trunc(45.235,-1) //40
mode(1600,300) //100 求余数
oracle 内部日期存储格式是:
century year month day hours minutes seconds
默认日期格式: DD-MON-YY
SYSDATE 可返回日期和时间
DUAL是名义表,比如可以这样: select sysdate from dual;
设置时间格式: alter session set nls_date_format = 'YYYY-MM-DD'
日期相减等于相距的天数
month_between('01-sep-95','11-jan-94'); //两个日期相差多少月
add_months('01-sep-95',6); //在日期上加上月份数
next_day('01-sep-95','friday'); //指定日期的后一天
last_day('01-sep-95'); //月份中最后一天
round(25sep-95','MONTH'); //四舍五入日期 对月95-10-1
round('25-sep-95','YEAR'); //四舍五入日期 对年 96-01-01
trunc('25-sep-95','MONTH'); //截断日期 95-09-01
trunc('25-sep-95','YEAR'); //截断日期 95-01-01
隐式数据转换:
from to
varchar2 or char number
varchar2 or char date
number varchar2
date varchar2
显示式转换
number -> character to_char()
character -> number to_number()
character -> date to_date()
日期模型字符:
YYYY
YEAR
MM
MONTH //月的完整名称
DY //星期三个字符缩写
DAY //天的完整名称
to_char示例
select ename ,to_char(hiredate,'YYYY-MM-DD') from emp;
select ename ,to_char(sal) from emp;
insert into emp(ename,hiredate) values ('name','1999-01-01') ; //这里要求日期格式的格式与当前格式一样,否则会报错,
insert into emp(ename,hiredate) values ('name',to_date('1999-01-01','YYYY-MM-DD')) ; //这样就没有关系.
NVL函数:将NULL值转换成一个实际值:
如:
select NVL(sal,0) from emp;
select NVL(ename,'test') from emp;
select NVL(hiredate,to_date('1999-01-01','YYYY-MM-DD');
DECODE函数:
select decode(sal,100,'等于100',200,'等于200','不等于100和200') from emp;
字段 值1 结果 值2 结果 其他情况的结果
sql plus命令
1、把前一条sql语句保存到缓存 ed
2、把前一条sql语句保存到磁盘 save 'd:/sql.txt'
3、把文件中的sql内容加载到缓存中 get 'd:/sql.txt'
4、把文件中的sql内容加载到缓存并执行 @ 'd:/sql.txt'
5、清屏 clear screen
6、运行前一sql 语句 run r /
7、连接本机数据库 connect scott/tiger
8、如果连接远程数据库要加主要字符串 connect oracle/oracle@teacher
9、给用户赋权 grant select on table1 to oracle