Oracle年历【By Jackywood】
jackywood原创,lastwinner小做修改:)原文地址:http://www.itpub.net/469543.html[@more@]column next_year new_v next_yearset termout offselect to_char(add_months(sysdate,12),'yyyy') next_year from dual;set termout onaccept year char prompt '请输入日历年份,默认为明年:' default &next_year;set timing offset autotrace offset linesize 1000 set term off verify off feedback off pagesize 999 SET TRIMSPOOL ONspool calendar&year..htmlset heading offselect lpad(' ',30)||' Calendar of '||&am
9i下含有connect by会导致以关联字段为条件做查询时,结果不正确的现象
两表做关联,其中包含connect by子句,以关联字段作为条件去查询,结果显示不正确。改成先connect by,再做两表关联,然后以关联字段去做查询,就不会出现这个问题了 。文章发表地址:http://www.itpub.net/470311.html[@more@]测试环境Windows 2000 Server SP4 , Oracle 9.2.0.1现有两表TA(数据表)、TCODE(代码表)如下:CREATE TABLE TA(N_ID NUMBER(10) NOT NULL,C_NAME VARCHAR2(50 BYTE),N_SUP_ID NUMBER(10),C_COLOR VARCHAR2(10 BYTE),N_YXX NUMBER(1) DEFAULT 1 NOT NULL);ALTER TABLE TA ADD (PRIMARY KEY(N_ID));COMMENT ON
平方九宫
在3*3的九宫格内,用1,2,3,4,5,6,7,8,9的九个数字填入九宫格内,使得每行数字组成的十进制数平方根为整数。(一道java题)[@more@]http://www.itpub.net/468055.html【人工求解】平方根为整数,所以这个数的末尾一定是1/4/5/6/9而三位数是一个整数的平方的,只有如下的代码: 11 121 12 144 13 169 14 196 15 225 16 256 17 289 18 324 19 361 20 400 21 441 22 484 23 529 24 576 25 625 26 676 27 729 28 784 29
M2M--The day you went away
Well I wonder could it beWhen I was dreaming about you babyYou were dreaming of meCall me crazy, call me blindTo still be suffering is stupid after all of this timePRE-CHORUS 1Did I lose my love to someone betterAnd does she love you like I doI do, you know I really really do[@more@]CHORUS Well hey So much I need to say Been lonely since the day The day you went away So sad but true For me there is only you Been crying since the day The day you went away VERSE 2 I remember date and tim
HTMLEditor
从dvbbs中摘出来的一个HTML编辑器,很好用,可以将HTML特殊字符进行转换处理。尤其是用在pLog回复时,如果回复字符包含特殊HTML字符,那么你的回复就会被吃掉。嗯,这个问题比较让人恼火,尤其是贴sql语句涉及到<、>符号时。现在用这个工具,先写好你要回复的内容,然后点“HTML代码”,全选、复制、粘贴到pLog的回复处,即可保证你的回复信息不被吃掉。点击进行下载:HtmlEditor.rar [@more@]
How can I get the followling results?
根据标志位获得设备发生故障时间和恢复故障时间的列表http://www.itpub.net/464005.html 另外此文也可参考http://www.itpub.net/167645.html[@more@]I have a table, utc_devicestates, which includes three columns, deviceid, errorcode, currenttimethis is a table containing data of device status. When errorcode is 1, it indicates that device is in error status. When errorcode is 0, it incidates the device is in good status. Now, I need to write a procedure to get the device status, When I input deviceid, the
Simulate a loop in SQL【By hmxxyy】
SQL> select * from x;C1 C2---------- ----------11111 122222 233333 344444 4[@more@]SQL> create table y (c1 number);Table created.SQL> insert into y2 select a.c1 from x a,3 (4 select rownum rn from (select max(c2) maxlevel from x) a connect by 1=1 and level <=5 maxlevel) b6 where a.c2 >= rn7 order by c18 /10 rows created.SQL> select * from y;C1----------11111222222222233333333333333344444444444444444444http://blog.itpub.net/post/4791/27191 偶的方法:SQL> create table loopx(c1
求学生在某几道题上的答题正确率
已有试卷正确答案(如:abbaddccbaba……)和学生答案(如:abbabbaa……)以及某几道题号如(1,2,5,7,10……)的条件下求学生在这几道题上的正确率参见:http://www.itpub.net/355415,2.html[@more@]r为正确答案,s为学生答案,th为题号,需用逗号分开代码: SQL> var r varchar2(10); SQL> exec :r :='abcdabcd'; PL/SQL 过程已成功完成。 已用时间: 00: 00: 00.30 SQL> var s varchar2(10); SQL> exec :s :='aabbccdd'; PL/SQL 过程已成功完成。 已用时间: 00: 00: 00.20 SQL> var th varchar2(
Convert to rows by comma【By hmxxyy】
SQL> select c2 from test;C2----------------------------------------a,b,c,dd,efgh,iiiselect decode(lvl, 1, substr(c2, 1, instr(c2, ',', 1) - 1),length(c2) - length(replace(c2, ',')) + 1, substr(c2, instr(c2, ',', 1, lvl-1)+1),substr(c2, instr(c2, ',', 1, lvl-1) + 1, instr(c2, ',', 1, lvl) - instr(c2, ',', 1, lvl-1) -1))what_you_needfrom( select level lvlfrom (select data_length from user_tab_columns where table_name = 'TEST'and column_name = 'C2')connect by 1=1and level <= data_length),test
今天收成不错
挖哈哈:)具体参见这里:http://blog.itpub.net/post/7102/44843以及http://www.itpub.net/355415,2.html[@more@]
构造N个连续的数
今日学到一招,构造N个连续的数,不必从all_objects等视图中取,因为我们不知道N的具体大小,如果N超过了select count(*) from all_objects,那就得使用其他方式来实现了,一个巧妙的方法是这样的:SQL> select * from (select rownum from dual connect by rownum<&N);输入 n 的值: 6原值 1: select * from (select rownum from dual connect by rownum<&N)新值 1: select * from (select rownum from dual connect by rownum<6) ROWNUM---------- 1 2 3 4 5这个
取得列名组合成的字符串
开发中常常会用到一个表的字段组成的字符串,通常是用逗号分隔的一个列表,例如C_DM, C_MC, N_YXX以前都是desc 表,然后将列名复制粘贴到Word里,然后用查找替换的方式将回车替换成“,”或者其他分隔符来做到,现在用sql来得到select str from ( select str, rank()over(order by length(str) desc) rk from ( select sys_connect_by_path(column_name,'&Prefix') str from ( select s.*, rank()over(order by column_id desc) rn from user_tab_cols s where s.table_name=upper('&x') ) connect by rn = prior rn-1) ) wher
Oracle 9201下connect by的bug
原来在对含有connect by子句的多表关联的视图做查询时(以某个字段为条件进行查询),也碰到过问题——结果记录显示不正确(比如直接在视图里看到满足条件的记录就两个,可用sql去查却能查出多了好些)c是含有connect by子句的多表关联查询语句代码: select count(*) from c -->结果为15 select count(*) from c where field1='123'-> 结果为27 。。。。。。。。。后来改成含connect by的子句不做多表关联查询,只做单表查询,再将查询的结果做多表关联。这样就解决了问题。具体模拟实例有空再贴[@
测试一下你的Oracle有Full Outer Join的Bug么?9i以上请进(2)
Bug2: FULL OUTER JOIN = LEFT OUTER JOIN奇怪的是,如果将select a.*,b.mc MC1, c.mc MC2 from ts a,tdm b, tdm cwhere A.dm1 = B.DM(+) AND B.type(+)='1'and A.dm2 = c.DM(+) AND c.type(+)='2'创建为视图create view vts as select a.*,b.mc MC1, c.mc MC2from ts a,tdm b, tdm cwhere A.dm1 = B.DM(+) AND B.type(+)='1'and A.dm2 = c.DM(+) AND c.type(+)='2'/则下面的查询结果就是正确的[@more@]代码: SQL> select s.*,p.* from 2 vts s full outer join 3 (select * from (select tp.*,rank()over(order by id) rn fr
测试一下你的Oracle有Full Outer Join的Bug么?9i以上请进
BUG描述:FULL OUTER JOIN <> LEFT OUTER JOIN UNION RIGHT OUTER JOIN不知道Oracle网站上有没有相关描述,我在网上相关信息只搜索到left outer join可使用户可以查询任何表我的数据库服务器环境:OS:Windows 2000 Server DB:Oracle 9.2.0.1测试请写出你的数据库服务器环境[@more@]创建测试表--子表CREATE TABLE TS(ID VARCHAR2(4 BYTE),PID VARCHAR2(4 BYTE),DM1 VARCHAR2(4 BYTE),DM2 VARCHAR2(4 BYTE));--父表,ID与子表PID对应CREATE TABLE TP(ID VARCHAR2(4 BYTE),CON VARCHAR2(4 BYTE));--代码表CREATE TABLE TDM(TYPE VARC
铅笔的原则
铅笔即将被装箱运走,制造者很不放心,把它带到一旁跟它说:“在进入这个世界之前,我有5句话要告诉你,如果你能记住这些话,就会成为最好的铅笔。” 1.你将来能做很多大事,但是有一个前提,就是你不能盲目自由,你要允许自己被一只手握住; 2.你可能经常会感受到刀削般的疼痛,但是这些痛苦都是 必须的,它会使你成为一支更好的铅笔; 3.不要过于固执,要承认你所犯的任何错误,并且勇于改正它; 4.不管穿上什么样的外衣,你都要清楚一点,你最重要的部分总是在里面; 5.在你走过的任何地方,都必须留下不可磨
[转载]Oracle数据库字符集问题解析3
继续问题解答[@more@]ygzeng:收获很大,在测试过程中,增加了一些新的case,在测试过程中,发现“替代字符”往往容易转换成“靠”,“?”,“?”,“驴”,对这些乱码的产生原因有些不解!1,数据库字符集设为gb2312,客户端设为WE8ISO8859P1,然后插入数据,读取数据SET NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1sqlplus system/manager@gb2312select * from nls_database_parameters where PARAMETER='NLS_CHARACTERSET'; PARAMETER VALUE--------------------------------- ---------------------------------NLS_CHARACTERSET ZHS16CG
查询出N分钟内同一主叫拨打同一被叫次数超过M次的用户
有一张电话通话记录的表,字段有:id,主叫号码caller,被叫号码callee,开始时间begintime,结束时间endtime。请问如何查询出N分钟内同一主叫拨打同一被叫次数超过M次的这些用户??http://www.itpub.net/450873.html[@more@]By LastWinnerselect caller,callee from(select caller,callee,begintime-lag(begintime)over(partition by caller, callee order by begintime) call_interval from tab) where call_interval begin 0 and 3/1440如果是要超过M次的,M>=2,那么select caller,callee from(select caller,callee,begintime-lag(beg
[转载]REF CURSOR 小结
原文地址: http://www.itpub.net/443352.html 原文发表者:zhyuhREF CURSOR 小结 利用REF CURSOR,可以在程序间传递结果集(一个程序里打开游标变量,在另外的程序里处理数据)。也可以利用REF CURSOR实现BULK SQL,提高SQL性能。REF CURSOR分两种,Strong REF CURSOR 和 Weak REF CURSOR。Strong REF CURSOR:指定retrun type,CURSOR变量的类型必须和return type一致。DECLARETYPE strongcurtyp IS REF CURSOR RETURN emp%ROWTYPE;emp_cv strongcurtyp;Weak REF CURSOR:不指定return type,能和任何类型的CURSOR变量匹配。DECLARETYPE wea
[转载]Oracle数据库字符集问题解析2
实验结果分析五quote: SQL> INSERT INTO TEST VALUES('东北');1 row created.SQL> EXIT更改客户端字符集为ZHS16GBKD:>SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBKD:>SQLPLUS "/ AS SYSDBA"无法显示用US7ASCII插入的字符集,但可以显示用ZHS16GBK插入的字符集SQL> SELECT * FROM TEST;R1--------------------东北??东北6+11SQL>疑问3:US7ASCII为ZHS16GBK的子集,为何在US7ASCII环境下插入的数据无法显示? [/B] [@more@]在客户端字符集设置为US7ASCII时,向字符集为ZHS16GBK的数据库中插入“东北”,需要进行字符