Oracle正则表达式的用法
Oracle正则表达式的用法l 方括号表达示方括号表达式描述[[:alnum:]]字母和数字混合的字符[[:alpha:]]字母字符[[:cntrl:]]控制字符[[:digit:]]数字字符[[:graph:]]图像字符[[:lower:]]小写字母字符[[:print:]]打印字符[[:punct:]]标点符号字符[[:space:]]空格字符[[:upper:]]大写字母字符[[:xdigit:]]十六进制数字字符l 元字符元字符描述*?如果有前面字符串的0次以上出现时匹配+?如果有前面字符串的1次以上出现时匹配{m}m是整数。它文本中找出给定子表达式的恰好m次出现{n}?前面的字符串只出现一次时匹配{m,}M是整数。它在文本中找出给定
用ORACLE分析函数实现行列转换
摘 要 对数据库中的数据用SQL实现行列转换,不但需要编写复杂的程序代码,还需要编写存储过程。若引入ORACLE中的分析函数则会使该过程简便很多。首先找出表中所有关键字的属性个数的最大值,设为n,其次为每个关键字新添加n列,并用分析函数查询关键字的属性所处列的位置,然后将每个关键字的多行属性转换成多列属性,最后把生成的多个新列拼成一个串形成一列,从而实现行列转换。 关键字 Oracle数据库;分析函数;行列转换 1 引言 分析函数的设计目的是为了解决诸如“累计计算”等问题。虽然大部分的问题都可以用PL/SQL解决
左连接与右连接
数据表的连接有: 1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2、外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3、自连接(连接发生在一张基表内) select a.studentno, a.studentname, b.classname from students a, classes b where a.classid(+) = b.classid; STUDENTNO STUDENTNAM CLASSNAME ---------- ---------- ------------------------------ 1 周虎 一年级一班 2 周林 一年级二班 一年级三班 以上语句是
动态调用带参数的存储过程
如何动态调用带参数的存储过程呢? 上面测试的都是没有参数的存储过程;请问如何动态调用带参数的存储过程;如:proc_one,proc_two都是没有参数的;如果是有参数,怎么样把参数从proc_main传递给proc_one,proc_one修改后,还能传递给proc_main;空心菜 | 12/12/2006, 22:47 今天中午抽空为其写了一个新的demo,希望能有所帮助说明:proc_one、proc_two、proc_three用来模拟三个procedure,proc_main用来通过动态调用前面三个过程的过程。在proc_main中输入一个参数,在proc_one/two/three中处理后返回到proc_main中。下面是code和测试过程。SQL>
修改内存导致Ora-27100错误
由于修改Oracle内存配置参数,导致数据库无法启动系统弹出Ora-27100错误。其解决方法如下:1、给Oracle数据库添加数据文件,系统反应慢,直接重启服务器。服务器启动完成后,Oracle不能启动,检查发现,启动时Ora-27100错误,关闭时出现ora-27101错误。2、sqlplus /nolog3、connect / as sysdba4、create pfile from spfile5、修改pfile[initsid.ora]文件中的内存参数-减小到默认状态(可以参考其他默认安装的oracle数据库内存参数配置)。6、create spfile from pfile7、shutdown abort8、关闭Window服务管理器中的Oracle相关服务。9、重
ORACLE 集合运算
■■集合运算(UNION、UNION ALL、INTERSECT、MINUS)集合运算组合两个或多个部分查询的结果到一个结果中。包含集合运算的查询称为复合查询。Operator ReturnsUNION(联合) 由每个查询选择的所有不同的行(无重复值)UNION ALL 由每个查询选择的所有的行,包括所有重复的行INTERSECT(交叉) 由两个查询选择的所有不同的行MINUS 由第一个查询选择的所有不同的行所有的集合运算与等号的优先级相同,如果SQL语句包含多个集合运算并且没有圆括号明确地指定另一个顺序,Oracle服务器将以从左到右的顺序计算。你应该使用圆括号来明确地指定带另外的集合
oracle 日期函数介绍
在oracle中有很多关于日期的函数,如:1、add_months()用于从一个日期值增加或减少一些月份date_value:=add_months(date_value,number_of_months)例:SQL> select add_months(sysdate,12) "Next Year" from dual; Next Year----------13-11月-04 SQL> select add_months(sysdate,112) "Last Year" from dual; Last Year----------13-3月 -13 SQL> 2、current_date()返回当前会放时区中的当前日期date_value:=current_dateSQL> column sessiontimezone for a15SQL> select sessiontimezone,curr
ORACLE-快速删除重复的记录
ORACLE-快速删除重复的记录 转文/Ray对此,总结了一下删除重复记录的方法,以及每种方法的优缺点。为了陈述方便,假设表名为Tbl,表中有三列col1,col2,col3,其中col1,col2是主键,并且,col1,col2上加了索引。1、通过创建临时表可以把数据先导入到一个临时表中,然后删除原表的数据,再把数据导回原表,SQL语句如下:creat table tbl_tmp (select distinct* from tbl);truncate table tbl;//清空表记录insert into tbl select * from tbl_tmp;//将临时表中的数据插回来。这种方法可以实现需求,但是很明显,对于一个千万级记录的表
闪回查询(转)
1、Oracle 9i的闪回查询功能 在Oracle 9i之前,如果用户错误操作数据后,除了不完全恢复外,没有好的解决办法。Oracle 9i中提供闪回查询,由一个新的包DBMS_FLASH来实现。用户使用闪回查询可以及时取得误操作DML(Delete、Update、Insert)前某一时间点数据库的映像视图,用户可以利用系统时间或系统改变号(SCN:System Change Number)来指定这个只读视图,并可以针对错误进行相应的恢复措施。闪回查询功能完全依赖于自动回滚段管理(AUM),对于Drop等误操作不能恢复。闪回特性可应用在以下方面: (1)自我维护过程中的
commit 与do_key('commit_form')区别
1.commit_form针对form上面的数据变动进行commit,对于代码中的类似update,insert语句也进行提交;如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。2.do_key('commit_form')会首先寻找form下的triggers中的KEY-COMMIT这个trigger,并执行KEY-COMMIT中所写的代码。如果没有KEY-COMMIT这个trigger,则会针对form和代码一起提交。如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。3.commit对form和数据库进行提交.如果form上面的数据变动和代码中的数据变动有冲突,最后以界面上的为准。4.forms_d
RMAN备份
1、切换服务器归档模式,如果已经是归档模式可跳过此步: %sqlplus /nolog (启动sqlplus) SQL> conn / as sysdba (以DBA身份连接数据库) SQL> shutdown immediate; (立即关闭数据库) SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式) SQL> alter database open; (打开数据库) SQL> alter system archive log start; (启用自动归档) SQL> exit (退出) 2、连接: %rman target=rman/rman@mydb (启动恢复管理器) 3、基本设置: RMAN> configure defaul
面试题,大家也可以看看(piner)
只列出了技能问题,其它问题暂不列出,大家看看吧。。。技能问题数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?表空间管理方式有哪几种,各有什么优劣。本地索引与全局索引的差别与适用情况。一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么?9i的data guard有几种模式,各有什么差别。执行计划是什么,查看执行计划一般有哪几种方式。简单描述一下nest loop与hash join的差别。db file sequential read与db file scattered read等待的差别,如果
一句SQL实现输出九九乘法表
代码: SQL> with t as (select level as n from dual connect by level <=9) 2 select substr(sys_connect_by_path(b.n || '*' || a.n || '=' || a.n * b.n, ' '),2) as val 3 from t a, t b 4 where a.n >= b.n and level = a.n 5 start with b.n=1 6 connect by a.n=prior a.n and b.n=prior b.n+1 7 / VAL -------------------------------------------------------------------------------- 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4
10gR2--EMCA常用命令说明:
=========================================================== 作者: vongates(http://vongates.itpub.net)发表于: 2007.03.14 16:12分类: 10gR2 出处: http://vongates.itpub.net/post/2553/271778--------------------------------------------------------------- 在10g 中,我们可能会经常遇到OEM不能正常使用的问题,但导致问题的原因不尽相同,最后绝大多数问题可以通过emca 这个命令来解决,详细的说明可以查看连机帮助,下面给出一些常用的命令,及实例步骤.创建一个EM资料库emca -repos create重建一个EM资料库emca -repos recreate删
LINUX常用命令
学习linux命令的最佳帖子. 因为这篇文章很有价值,掌握后确实可以从linux的初学者变成linux好手,掌握了它就等于完全入了linux的门,不愧是本年度学习linux命令的最佳帖子。所以请版本最好把它锁定一个靠前的位置,以便让更多的人可以看到这篇文章,让更多的人从初学者变成好手。如果本篇没有被锁定,如果对你有用的话,请签收它,以便让它一直可以被大家看到。如下是linux最常用的命令及用途,当全部掌握以后,就没人敢说你不会linux。版权所有其实指的是版板归大家所有,你可以用自己的名字发表,也可以借我的大名宣传一下,as you like.大
实在是做不出来的高难的SQL语句,高手看看
记录type billno feeA 1 50A 2 100A 3 150A 4 200A 8 50A 9 100A 12 50S 1 50S 3 50S 4 100要求按照TYPE,并且billno是连续的分组sum(fee)得到的记录是type start end sumfeeA 1 4 500A 8 9 150A 12 12 50S 1 1 50S 3 4 150 create table t (type varchar2(1),billno number,fee number);insert into t values('A',1 ,50 );insert into t values('A',2 ,100);insert into t values('A',3 ,150);insert into t values('A',4 ,200);insert into t values('A',8 ,50 );insert into t values('A',9 ,100);insert into t values('A',12, 50);ins
IT项目经理需要很专业的IT知识吗
IT项目经理需要很专业的IT知识吗[@more@]我是从硬件工程师做到部门主管,对于项目管理,我觉得IT行业的项目管理与其他行业不同,他需要比较全面的IT背景知识。一个做ERP项目的项目经理,他无法完成一个金融中间业务的项目开发。同时在一个项目里会涉及到主机技术、网络技术、数据库技术甚至还有备份技术与容灾技术等,对于这么多的专业技术,是否需要该项目的项目经理对他负责的项目里所包含的技术有一个大概的了解。对于IT部门的管理者,我觉得光有很丰富的管理知识和经验不够,你必须在专业技术上面也要是很有权威的一个人,你要让小组的
索引中使用函数
create index scott_emp_date on scott.emp(add_months(hiredate,4))select * from scott.empwhere add_months(hiredate,4)>to_date('19820101','yyyymmdd')SELECT STATEMENT, GOAL = FIRST_ROWS 1 4 348TABLE ACCESS BY INDEX ROWID SCOTT EMP 1 4 348INDEX RANGE SCAN APPS SCOTT_EMP_DATE 2 1[@more@]
大家进来讨论下正则表达式的应用
大家进来讨论下正则表达式的应用[@more@]oracle的正则表达式 oracle的正则表达式(regular expression)简单介绍目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。Oracle 10g正则表达式提高了SQL灵活性。有效的解决了数据有效性, 重复词的辨认, 无关的空白检测,或者分解多个正则组成的字符串等问题。Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和REGEXP_REPLACE。它们使用POSIX 正则表达式代替了老的百分号(%)和通配
请教Trigger的一个有难度的问题
请教Trigger的一个有难度的问题[@more@]请问如何在trigger中获取触发这个trigger的CREATE OR REPLACE TRIGGER TRG_LOG_SQLBEFORE INSERTON MYTABLEDECLAREn NUMBER;stmt varchar2(4000);sql_text ora_name_list_t;BEGINn := ora_sql_txt(sql_text);FOR i IN 1..n LOOP stmt := stmt || sql_text(i); END LOOP;INSERT INTO DDL_LOG(DDL_TIME, DDL_USER, DDL_HOST, DDL_IP, DDL_SQL)VALUES(SYSDATE,USER,SYS_CONTEXT('USERENV','HOST'), SYS_CONTEXT('USERENV','IP_ADDRESS'),stmt);EXCEPTIONWHEN OTHERS THEN-- Consider logging the error