oracle函数

Oracle 左侧或右侧补齐函数lpad/rpad函数

霸气de小男生 提交于 2020-01-13 01:36:02
lpad函数从左边对字符串使用指定的字符进行填充。 语法格式: lpad( string, padded_length, [ pad_string ] ) 参数说明: string 准备被填充的字符串; padded_length 填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符; pad_string 填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。 实例: select lpad('abcde',10,'x') from dual; 执行结果: xxxxxabcde *********************************************************分割线******************************************** rpad函数从右边对字符串使用指定的字符进行填充,语法格式与lpad格式相同。 语法格式: rpad(string,padded_length,[pad_string]) 参数说明: string 被填充的字符串 padded_length 字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短

查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)

非 Y 不嫁゛ 提交于 2020-01-12 10:39:59
  1、用户   查看当前用户的缺省表空间   SQL>select username,default_tablespace from user_users;   查看当前用户的角色   SQL>select * from user_role_privs;   查看当前用户的系统权限和表级权限   SQL>select * from user_sys_privs;   SQL>select * from user_tab_privs;   显示当前会话所具有的权限   SQL>select * from session_privs;   显示指定用户所具有的系统权限   SQL>select * from dba_sys_privs where grantee='GAME';   2、表   查看用户下所有的表   SQL>select * from user_tables; SELECT * FROM ALL_TABLES;   查看名称包含log字符的表   SQL>select object_name,object_id from user_objects   where instr(object_name,'LOG')>0;   查看某表的创建时间   SQL>select object_name,created from user_objects where object

ORACLE 查看当前用户信息(用户,表视图,索引,表空间,同义词,存储过程,约束条件)

穿精又带淫゛_ 提交于 2020-01-12 03:50:27
1、用户   查看当前用户的缺省表空间   SQL> select username,default_tablespace from user_users;   查看当前用户的角色   SQL> select * from user_role_privs;   查看当前用户的系统权限和表级权限   SQL> select * from user_sys_privs;   SQL> select * from user_tab_privs;   显示当前会话所具有的权限   SQL> select * from session_privs;   显示指定用户所具有的系统权限   SQL> select * from dba_sys_privs where grantee= 'GAME';   2、表   查看用户下所有的表   SQL> select * from user_tables; SELECT * FROM ALL_TABLES;   查看名称包含log字符的表   SQL> select object_name,object_id from user_objects    where instr(object_name, 'LOG')>0;   查看某表的创建时间   SQL> select object_name,created from user_objects

oracle 截取字符 substr ,检索字符位置 instr

删除回忆录丶 提交于 2020-01-11 12:56:12
常用函数:substr和instr 1.SUBSTR(string,start_position,[length]) 求子字符串,返回字符串 解释:string 元字符串 start_position 开始位置(从0开始) length 可选项,子字符串的个数 substr("ABCDEFG", 0); --返回:ABCDEFG,截取所有字符 substr("ABCDEFG", 2); --返回:CDEFG,截取从C开始之后所有字符 substr("ABCDEFG", 0, 3); --返回:ABC,截取从A开始3个字符 substr("ABCDEFG", 0, 100); --返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。 substr("ABCDEFG", -3); --返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。 2.INSTR(string,subString,position,ocurrence)查找字符串位置 解释:string:源字符串 subString:要查找的子字符串 position:查找的开始位置 ocurrence:源字符串中第几次出现的子字符串 INSTR('CORPORATE FLOOR','OR', 3, 2)--源字符串为'CORPORATE FLOOR

oracle sql优化

笑着哭i 提交于 2020-01-11 07:16:29
整理一下网上所看到sql优化方法 1 、 使用大写字母书写sql,因为oracle解释器会先将sql语句转换成大写后再解释 2 减少访问数据库的次数,多数情况下一条sql可以达到目的的,就不要使用多条sql。 当执行每条SQL语句时,ORACLE在内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等等。由此可见,减少访问数据的次数,就能实际上减少ORACLE的工作量。 例如: 以下有三种方法可以检索出雇员号等于0342或0291的职员。 方法1(最低效) SELECT EMP_NAME,SALARY,GRADE FROM EMP WHERE EMP_NO=342; SELECT EMP_NAME,SALARY,GRADE FROM EMP WHERE EMP_NO=29; 方法2(高效) SELECT A.EMP_NAME,A.SALARY,A.GRADE, B.EMP_NAME,B.SALARY,B.GRADE FORM EMP A,EMP B WHERE A.EMP_NO=342 AND B.EMP_NO=29 3 减少对表的查询 在含有子查询的SQL语句中,要特别注意减少对表的查询。例如: 低效 SELECT TAB_NAME FROM TABLES WHERE TAB_NAME=(SELECT TAB_NAME FROM TAB_COLUMNS

[orcle] oracle截取字符串的函数substr

核能气质少年 提交于 2020-01-11 06:55:49
substr    Oracle 中的截取字符串函数。   语法如下:   substr( string, start_position, [ length ] )   参数分析:   string   字符串值   start_position   截取字符串的初始位置, Number型,start_position为负数时,表示从字符串右边数起。   length   截取位数,Number型   其中,length为可选,如果length为空(即不填)则返回start_position后面的所有字符。   意思就是:   从start_position开始,取出length个字符并返回取出的字符串。   具体参考示例。   示例:   SELECT substr('This is a test', 6, 2) FROM dual 返回 'is'   substr('SyranMo have a dream', -8, 2) 来源: https://www.cnblogs.com/kentyouyou/archive/2013/03/06/2945495.html

【Oracle】去除表中重复的数据

倾然丶 夕夏残阳落幕 提交于 2020-01-10 20:07:56
删除表重复数据 (t1表中有重复数据) 1、使用distinct create table t2 as select * from t1; create table tmp_t2 as select distinct * from t2; drop table t2;alter table tmp_t2 rename to t2(需停业务) ------------------------------------------------------------------------------------ 2、使用ROWID delete from t1 where rowid <>( select min(rowid) from t1 b where b.c1 = t1.c1 and b.c2 = t1.c2 ) ------------------------------------------------------------------------------------ 3、用rowid + group by 的方法 delete from t1 where rowid not in (select min(rowid) from t1 group by c1,c2 ); ------------------------------------------------

基于oracle的sql优化

↘锁芯ラ 提交于 2020-01-10 13:53:45
基于oracle的sql优化 基于oracle的sql优化 一.编写初衷描述 在应有系统开发初期,由于数据库数据较少,对于sql语句各种写法的编写体现不出sql的性能优劣,随着数据的不断增加,出现海量数据,劣质sql与优质sql在执行效率甚至存在百倍差距,可见sql优化的重要性 二.Sql语句性能优化 2.1 认识Oracle的执行过程 2.2 Oracle优化法则—漏斗法则 2.3 Oracle 执行计划 2.3.1 什么是Oracle执行计划 执行计划是一条查询语句在Oracle中执行过程或者访问路径的描述. 2.3.2 查看Oracle执行计划 1.执行计划常用的列字段解释 基数:返回的结果集行数 字节:执行该步骤后返回的字节数 耗费(cust),CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好. 2.3.3 看懂Oracle执行计划 2.3.3.1执行顺序 根据缩进来判断,缩进最多的最先执行(缩进相同时,最上面的最先执行) 2.4 表的访问方式 TABLE ACCESS FULL ( 全表扫描 ) TABLE ACCESS BY ROWID ( 通过rowid的表存取 ) TABLE ACCESS BY INDEX SCAN ( 索引扫描 ) 2.4.1 ABLE ACCESS FULL(全表扫描) Oracle会读取表中的所有行

[Oracle整理]Trigger失效

浪子不回头ぞ 提交于 2020-01-10 05:29:26
说明:本内容是工作用到的知识点整理,来自工作中和网络。 代码于Oracle9上测试。 Trigger 失效 经常发现系统里的 Trigger 失效( all_objects.status= 'INVALID' 并且 all_triggers.status= 'ENABLED' ) 失效原因 涉及的一些表或者其它对象被删除或者其它操作( DDL ),这时你需要重新编译或重建。所以,严密周到还是配有相应文档。举一个例子, Test1 表( NUM , CREATEDATE), 有一个 insert 触发器 , 当 alter table Test1 add(a); 那触发器变为失效,要重新创建。 同样,删除字段也会失效。 同样,修改字段的类型( Type )也会失效。 查看 Trigger 状态 -- 有是否有效的状态 (INVALID/VALID) select * from all_objects o where o.object_type='TRIGGER' AND o.object_name in ('WRITE_BACK_RCL_DETAIL_F137','WRITE_BACK_RCL_DETAIL_F138') -- 有是否启用的状态 (DISABLED/ENABLED) select * from all_triggers t where t.trigger_name

Oracle单表查询

点点圈 提交于 2020-01-10 00:10:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 创建和管理表(DDL) --创建表 CREATE TABLE emp1( ID NUMBER(4) NOT NULL, NAME VARCHAR2(20), salary NUMBER(5,2), hire_date DATE ) --修改表 -|增加新列 ALTER TABLE emp1 ADD (birthday DATE)--括号内不要加逗号 -|修改现有的列 ALTER TABLE emp1 MODIFY (birthday VARCHAR2(20)) -|重命名列名 ALTER TABLE emp1 RENAME COLUMN salary TO sal -|删除现有的列 ALTER TABLE emp1 DROP COLUMN birthday -|清空表中数据 TRUNCATE TABLE emp1 --重命名表 RENAME emp1 TO emp2 --删除表 DROP TABLE emp1 -------------------------------------------------------------------------------------- 数据处理 DML --增 -|插入数据 INSERT INTO emp2(NAME, sal, ID, hire_date)