Development
文章平均质量分 60
Teresa7
这个作者很懒,什么都没留下…
展开
-
将一串数字转换成多列数据
with t as (select '123456789' numbr from dualunion allselect '234567'numbr from dualunion allselect '1234'numbr from dual),t1 as (select ltrim(REGEXP_REPLACE(numbr,'\d{0}',','),',') id from t)原创 2017-12-08 16:02:35 · 695 阅读 · 0 评论 -
正则表达式regexp_substr
正则表达式regexp_substr截取字符串 ①select regexp_substr(string, '[^,]+', 1, level) from dualconnect by level <= regexp_count(string, '[^,]+') and rowid = prior (rowid) and (prior dbms_random.v原创 2017-06-29 15:26:38 · 8811 阅读 · 0 评论 -
sqlload导入txt文件
1、创建表 create table dm_ip_class ( ipstart varchar2(50), ipend varchar2(50), country varchar2(50), isp varchar2(100)原创 2017-06-23 17:09:06 · 1512 阅读 · 0 评论 -
要求:将125万数据的兑换码,分25列,一列5万数据提取出来
/*要求:将125万数据的兑换码,分25列,一列5万数据提取出来*/select /*+ parallel(cc,4) */ max(decode(rn, 1, exch_code)) col1, max(decode(rn, 2, exch_code)) col2, max(decode(rn, 3, exch_code)) col3, max(de原创 2017-07-12 17:37:55 · 731 阅读 · 0 评论 -
ORA-12838: 无法在并行模式下修改之后读/修改对象
SQL> create table b (object_id number, object_name varchar2(200));表已创建。SQL> insert /+append/into b select object_id+4,substr(object_name,1,10) from dba_objects;已创建75317行。SQL> insert /+append/into b sel原创 2017-01-01 16:29:14 · 7543 阅读 · 0 评论 -
使用PLSQL完成功能
请使用PLSQL完成对SCOTT的emp表中的员工,按照不同的工作岗位类型,进行涨工资的操作CLERK 涨幅500块ANALYST 涨幅1000块MANAGER 涨幅8%其他岗位涨幅5%create or replace procedure test_pc as cursor emp1_cur is select empno, job from emp1;原创 2017-07-02 21:20:29 · 449 阅读 · 0 评论 -
示例一个PLSQL完成功能来说明PLSQL的作用(定义变量+异常处理+抛异常)
创建的员工表中添加一个新的成员,首先需要判断要添加的员工工号是否存在,如果存在,则更新该工号对应的员工的信息,否则添加一个新的员工;SQL> select * from t where t.empno='7788'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO原创 2017-07-11 18:27:15 · 841 阅读 · 0 评论 -
序列(sequence)语法
1、创建、删除create sequence seq_newsIdincrement by 1start with 1maxvalue 999999999;得到序列的SQL语句select seq_newsid.nextval from sys.dual;删除序列的SQLDROP SEQUENCE seq_newsId;原创 2017-06-06 15:06:04 · 902 阅读 · 0 评论 -
使用Sequences生成主键值
Sequences是用来产生primary key values.在工作中,利用序列来产生主键值,相当于insert into t1 values(s1.next,name) ,来插入一张表的时候,插入到表块和索引块,插入到表块的时候没有问题,插入到索引块的时候,由于索引是有序的,这个会话会申请独占的Latch,在CBC Latch 的保护下,去访问CBC链表,CBC链表buffer hea原创 2017-07-11 11:28:38 · 679 阅读 · 0 评论 -
自定义异常,两种方式
自定义异常,两种方式: N1:create table test_aa(id number,crt_dt date);-----最终能够编译成功declare v_ename varchar2(320); -- v_exp EXCEPTION;l_error varchar2(320); begininsert into test_aa (id,crt_dt )原创 2017-07-11 10:50:26 · 553 阅读 · 0 评论 -
DBLINK
--建立连接 create database link db_scott connect to 用户 identified by 密码 using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 连接库IP)(PORT = 1521)) ) (CONNECT_原创 2017-02-10 10:34:44 · 350 阅读 · 0 评论 -
报表需求:周一提取周五到周日的数据,其他时刻提取当天数据
现在的需求是,出一张日报,每天发送的是前一天的数据。如果是周末的话,不出数据,等在周一提取上周五到这周日的数据。实现以上功能。现在7月14,模拟7月10号的状况交易表数据with invest as (select to_date('20170702', 'yyyymmdd') + level dt, level + 100 tranam from dual connect原创 2017-07-14 17:27:37 · 1004 阅读 · 0 评论 -
使用sqlerrm打印错误信息
--首先创建一张空表SQL> create table t as select * from emp where 1=2;Table created--创建一个存储过程,使用异常,打印错误信息declare v_ename varchar2(30);begin select ename into v_ename from t;exception原创 2017-07-06 17:57:02 · 808 阅读 · 0 评论 -
数据仓库--postgresql for 循环记录完成存储过程总调度
业务需求:需要创建一个存储过程调度五个存储过程,思路使用FOR循环获取表名,由于存储过程是P_加表名,定义一个变量获取存储过程名。执行存储过程必须判断task表里执行的状态,如果是0则执行存储过程,并更新task里的状态和执行时间。在此遇见两个问题:oracle和POSTSQL还是有很大区别的遇见一个错误:1、在执行select into SQL语句的时候会报错,解决方法:先定义一个SQ原创 2017-09-28 11:05:56 · 10467 阅读 · 0 评论 -
使用Postpresql创建存储过程的时候报一个错误 ERROR: array value must start with "{" or dimension information
SELECT COUNT ( DISTINCT CASE WHEN T .trandt >= substr('20170930', 1, 6) || '01' THEN member_cd END ) recharg_ct_monFROM cds.CDS_P_RECHARGE T;报一个错误 ERROR: array value must start with "{原创 2017-09-30 17:15:06 · 3594 阅读 · 0 评论 -
postpresql 打印变量+自定义错误并返回+for循环语法模板
CREATE OR REPLACE FUNCTION p_test(p_syscd TEXT) RETURNS TEXT AS $BODY$ DECLARE V_STARTTIME TIMESTAMP WITHOUT TIME ZONE; ---定义任务开始时间 V_ENDTIME TIMESTAMP WITHOUT TIME ZONE; ----定义任务结束时间 V_ERROR原创 2017-10-17 18:08:53 · 681 阅读 · 0 评论 -
PostgreSQL的学习
PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统) 。PostgreSQL使用一种客户端/服务器的模型。一次PostgreSQL会话由下列相关的进程(程序)组成: 一个服务器进程,它管理数据库文件、接受来自客户端应用与数据库的联接并且代表客户端在数据库上执行操作。 该数据库服务器程序叫postgresPostgreSQL服务器可以处理来自客户端的多个并发请求以下对原创 2017-08-31 18:09:38 · 1169 阅读 · 0 评论 -
GP库查看表上的锁
1、查看表中存在的锁select a.locktype,a.database,a.pid,a.mode,a.relation,b.relnamefrom pg_locks ajoin pg_class b on a.relation = b.oidwhere upper(b.relname) = 'table_name';2.杀掉进程。kill有两种方式,第一种是:SEL原创 2017-09-27 10:30:55 · 5005 阅读 · 0 评论 -
工作中行转列的小需求
很久没有更新博客了,最近工作事情比较杂多,还给自己报考了驾校(一个到现在才去学车的人,真的很懒了)产品有一个需求是这样的,要看一个用户最后三次的登录时间,并且按列展示。t_member 表是用户表(记录用户id和一些用户信息),t_member_log 表是登录日志表,记录的是用户和登录时间。一看到这个需求就想到了行转列,以下就是实现方式select m.account_no 电子账原创 2017-08-24 09:55:03 · 309 阅读 · 0 评论 -
阿里quick_bi和biee报表工具的对比
最近在用两个报表工具开发,然后做了一下对比。quick_bi阿里提供的视频足够可以去完成业务部门的需求了,选项也比较简单,还是比较人性化的设计毕竟软件开发出来是为了人更好使用,我接触的可能比较浅显,从我开始接触这个软件到能够开发报表就花了半个小时,然后就能够做列表展示的报表了。以下进行了总结总结:1.做报表第一步是从数据源入手,进行计算的值在数据源进行增加,修改字段名称。(这里对于特殊原创 2017-09-05 15:22:34 · 5791 阅读 · 0 评论 -
PLSQL条件语句完成员工加薪功能(记录类型+游标case when+if+for update+where current of)
TEST1:请使用函数+plsql完成给员工加薪的功能。CLERK 加薪 20%; SALESMAN 加薪30%; MANAGER 加薪35%SQL> select * from t; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ----原创 2017-07-24 11:23:33 · 3881 阅读 · 0 评论 -
日期函数
1、用trunc( )函数截取日期作为月初select hiredate 雇用日期, trunc(hiredate, 'mm') 月初 from emp where rownum 雇用日期 月初----------- -----------1980/12/17 1980/12/1例子:select hiredate, to_number(to_c原创 2017-07-07 10:14:35 · 302 阅读 · 0 评论 -
罗列出一年的星期数
N1:with x0 as(select to_date('2016-01-01','yyyy-mm-dd') as 年初 from dual),x1 as (select 年初,add_months(年初,12) as 下年初 from x0),x2 as (select 年初,下年初,下年初-年初 as 天数 from x1),x3 as /*生成列表*/(select 年初+(LE原创 2017-06-27 10:47:08 · 331 阅读 · 0 评论 -
instr+listagg+正则表达式+substr函数+translate
1、instr 函数的用法:(1):instr(string,sr,i,j)string 被搜索的字符串,sr是希望搜索的字符串,i是搜索开始位置,默认为1,j是sr出现的位置,第n次出现,默认是1①这里是设置为默认值,从第一个字母开始的位置,第一次出现is的位置。SQL> select instr('Mississippi','is') instring from dual;原创 2017-05-22 10:52:47 · 1755 阅读 · 0 评论 -
去除制表符、空格、换行符、空格符特殊 符号
由于业务需要,不定期的会导入一部分员工的信息,大概有2万多的数据量,为满足速度,采用sqlload的方式,这些数据无法保证数据是否会存在手工误输一些特殊符号, 所以要进行处理,这里我们导入时,借助一张临时表 member_load_imp。 这里有几种方式 常见特殊字符: chr(9) –制表符 chr(10) –换行符 chr(13) –回车符 chr(32) –空格符 chr原创 2017-05-25 10:47:33 · 3219 阅读 · 0 评论 -
使用动态SQL插入,ORA-00984: 列在此处不允许
创建一张日志表:create table import_log (batch_id number,content varchar2(500));comment on column import_log.batch_id is ' 批次号';comment on column import_log.content is ' 内容';错误:问题出现的原因原创 2017-03-17 17:00:47 · 4296 阅读 · 0 评论 -
使用绑定变量的性能比较测试
创建一张表tdrop table t;create table t (i int);创建两个存储过程,主要是实现的是,proc1使用绑定变量,像表中插入1000条数据。proc2使用常量向表中插入数据。create or replace procedure proc1 asbegin for i in 1 .. 10000 loop execute immed原创 2017-03-15 21:39:35 · 648 阅读 · 0 评论 -
某时间段内的断点
测试:drop table t;create table t (t_name varchar2(10),start_time varchar2(100),end_time varchar2(100)); insert into t values('a','2017/02/12/16:11:23','2017/02/18/16:13:23');insert into原创 2017-02-23 21:55:16 · 667 阅读 · 0 评论 -
压缩表
1、压缩表一般是用于OLAP系统中,表压缩特性通过删除在数据库表中发现的重复数据值来节省空间。压缩是在数据库的数据块级别上进行的,一般通过表压缩空间会压缩1/3到1/2。2、压缩表是用CPU来减少IO。3、创建压缩表的方法(1)创建表的时候进行压缩create table t3 (tno number,tname varchar2(20),tsal varchar2(20)) compre原创 2017-01-07 23:12:33 · 1907 阅读 · 0 评论 -
append+parallel,并行度
1.append和并行同时使用时注意: alter session enable parallel DML; ALTER SESSION SET db_file_multiblock_read_count=128; INSERT /+append parallel(b 2)/ 并行:两个并行包括三个进程,有一个进程是负责调度的。2.并行度 —-cmd下执行 SQL> set autot原创 2017-01-01 15:36:16 · 7331 阅读 · 0 评论 -
数据泵导入导出表
将 HHN库下 SCOTT 用户的 EMP 表和 DEPT 表导入到 HHN库下 TUSER 用户下。 1、 将 SCOTT 用户的 EMP 表和 DEPT 表导出: 在 SCOTT 用户下创建导出的目录: create or replace directory exp_file_dest as ‘E:\USER_DEST’; 2、在CMD下执行: expdp scott/oracle@H原创 2016-12-30 17:06:14 · 1254 阅读 · 0 评论 -
如果用append插入1亿行,回滚的时候会发生什么问题?
走如果用append插入1亿行,回滚的时候会发生什么问题? 测试: (1)第一个会话下执行 CREATE TABLE t (a INTEGER); insert into t select a.object_id from dba_objects a,dba_objects b where rownum <1000000; (2)新开一个会话执行: create TABLE t_appe原创 2016-12-29 15:53:33 · 465 阅读 · 0 评论 -
Filter的一个测试
Filter的一个测试:创建测试表 t1 和t2. create table t1 as select * from dba_objects where rownum<=5000;create table t2 as select * from dba_objects where rownum<=5000;执行该测试SQL,这里使用了提示来收集真实的执行计划select /*+ gat原创 2017-05-07 20:55:00 · 1118 阅读 · 0 评论 -
新增投资人数
投资元数据 create table t (custac varchar2(20),trandt varchar2(8),channel_cd varchar2(8) )insert into t values ('6000492298','20170412','90001');insert into t values('6000492298','20170412',原创 2017-04-25 21:19:19 · 652 阅读 · 0 评论 -
查看刚执行过得SQL文本
1、查看执行过得SQL脚本select sql_text, last_load_time, SQL_FULLTEXT from v$sql order by last_load_time desc;---执行过的select b.SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXT from v$sqlarea b 2、原创 2017-05-04 18:07:02 · 1175 阅读 · 0 评论 -
正则表达式 REGEXP_REPLACE
regexp_replace(srcstr => ,pattern => ,replacestr => ,position => ,occurrence => ,modifier => )语法说明:srcstr:字段 pattern:替换的字段 replacestr:替换成什么 position:起始位置(默认从1开始) occurrence:替换的次数(0是无限次) modifie原创 2017-06-30 15:51:25 · 14745 阅读 · 0 评论 -
使用正则表达式对xml文件中数据字典进行整理
在工作中,需要对xml文件中数据字典进行整理。SQL> create table t1(text varchar2(4000)); 表已创建。 SQL> insert into t1 values(' 2 3 '); 1 row inserted SQL> commit; Commit complete SQL> select原创 2017-06-29 15:38:33 · 707 阅读 · 0 评论 -
匿名块where条件使用变量(游标+集合)测试
总结:一个变量只能获取一个值,但是如果想在where条件中使用多个值时可以定义一个集合。create table t (id number);insert into t values(1);insert into t values(2);commit;create table t1 (id number,name varchar2(200));insert into t1 values原创 2017-05-22 10:57:07 · 1096 阅读 · 0 评论 -
merge into 语法
Oracle中,要实现相同的功能,要用到Merge into来实现(Oracle 9i引入的功能),其语法如下: MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) WHEN MATCHED THEN UPDATE SET col1 = col_va原创 2017-05-22 10:53:51 · 685 阅读 · 0 评论 -
lengthb 函数和 length 函数
lengthb 函数和 length 函数lengthb函数计算字节数,length函数记录字符数首先查看数据库的字符集:select * from nls_database_parameters; PARAMETER VALUE---------------------------原创 2017-06-16 17:07:31 · 3723 阅读 · 0 评论