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:清空回收站,清空后表无法恢复

原文地址:https://www.cnblogs.com/luoxionghenku/p/9929342.html