Oracle函数
1.单行函数
lower():全部小写
SELECT lower('ASC') FROM dual;
upper():全部大写
SELECT upper('asc') FROM dual;
initcap():首字母大写 帕斯卡命名法
SELECT initcap('asc asd') FROM dual;
concat():连接字符
--concat 连接
SELECT CONCAT('hahah','123') FROM dual;
subString():截取字符串
--substr('要截取的字符串',起始位置) 说明:位置从1开始
select substr('HelloWord',6) from dual
--substr('要截取的字符,起始位置,取几个字符)
select substr('HelloWord',6,1) from dual
length()/lengthb():获取字符/字节长度
--length('字符串'):字符个数统计 lengthb('字符串'):字节个数统计
select length('时间') 字符数,lengthb('时间') 字节数 from dual
instr():查询小字符在大字符中出现的位置
--instr('大字符串','小字符串')返回小字符串在大字符串中出现的位置
select instr('Hello Word','or') from dual
--instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)
select instr('Horlo Word','or',4,1) from dual--从第4个字母开始检索,但是前面的也要计数但不检索,1表示为出现次数
如果第三个参数为负数,就从右到左数
lpad():从左边填充
lpad('字符',长度(加上字符一共多少长度),'要加上的字符')在字符前面拼接
--lpad()从左边填充
select lpad('word',10,'p') from dual
rpad():从右边填充
rpad('字符',长度(加上字符一共多少长度),'要加上的字符')在字符后面拼接)
--rpad()从右边填充
select rpad('word',10,'*') from dual
trim():清除两边空格
1.
SELECT TRIM(' asc a asd ') FROM dual;
2.清除两边的字符
SELECT TRIM('a' FROM 'asada') FROM dual;
--ltrim()去除指定字符的左边空格
select ltrim(' aaa ') from dual
--rtrim()去除指定字符的右边空格
select rtrim(' aaa ') from dual
数学函数
Round():四舍五入
select round(12.45,1) from dual
结果:12.5
trunc():截断(不会四舍五入)
select trunc(12.45,1) from dual
nvl和nvl2 滤空函数
nvl()函数是oracle/plpgsql中的一个函数,格式为:nvl(string1, replace_with)
功能:如果string1 位null,那么nvl()函数返回replace_with的值,否则返回sting1的值。
注意:sting1和replace_with必须是同一数据类型,除非显示的适用to_char函数。
select sal*12工资,comm 奖金,sal*12+nvl(comm,0) from emp;
nvl()的扩展-nvl2()
Oracle在nvl()函数的功能上扩展,提供了nvl2()函数。
nvl2()(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。
select sal*12工资,comm 奖金,sal*12+nvl2(comm,comm,0) from emp;
日期函数
to_char()对日期的转换
SELECT to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')FROM dual;
to_char()对数字的转换
decode()函数
DECODE(value,if1,then1,if2,then2,if3,then3,...,else)
含义为
IF 条件=值1 THEN
RETURN(value 1)
ELSIF 条件=值2 THEN
RETURN(value 2)
......
ELSIF 条件=值n THEN
RETURN(value 3)
ELSE
RETURN(default)
END IF
SELECT ename,DECODE(job,'CLERK','职员','MANAGER','经理','SALESMAN','销售') FROM emp
利用decode实现表或者试图的行列转换
通过使用DECODE实现行列转换,查询出每个学生选的课程和相应的成绩。
SELECT name,
DECODE(course, 'java', gread) AS java,
DECODE(course, 'c#', gread) AS c#,
DECODE(course, 'c', gread) AS c,
DECODE(course, 'sql', gread) AS sql
FROM t;
通过使用聚合函数sum()来实现化散为整
SELECT name,
sum(DECODE(course, 'java', gread)) AS java,
sum(DECODE(course, 'c#', gread)) AS c#,
sum(DECODE(course, 'c', gread)) AS c,
sum(DECODE(course, 'sql', gread)) AS sql
FROM t
GROUP BY name;
这里分组函数就是聚合函数
使用sqlplus
打开cmd,输入“sqlplus”,输入用户名和密码,注意输入密码的不会显示(安全)
连接成功后
查询当前用户(windows下不区分大小写)
SHOW USER;
查看数据表
SELECT * from tab;
当你删除数据库中的一张表(这里的删除不是真正的删除,而是在回收站中)
查看所有数据表是,所删除的表name就会是一串字符
怎么查看这串字符是什么内容呢??
查看回收站中的表
SHOW recyclebin;
删除回收站中的表
oracle10以后:被删除的表放入回收站
闪回删除:flashback drop,可以恢复删除的表
purge:删除的表不放入回收站
闪回删除
语法
flashback table 表名 to before drop;
删除后不放回回收站
清空回收站
purge recyclebin:清空回收站,清空后表无法恢复