小编Sha*_*nce的帖子

使用row_number()时可以依赖输出顺序吗?

我相信答案是否定的.我正在寻找一个反例来证明输出顺序不能保证,没有order by子句.

考虑:

create table #order (orderId int primary key clustered
    , customerId int not null -- references customer(customerId)
    , orderDateTIme datetime not null)

insert into #order values (1, 100, '2009-01-01')
insert into #order values (2, 101, '2009-01-02')
insert into #order values (3, 102, '2009-01-03')
insert into #order values (4, 103, '2009-01-04')
insert into #order values (5, 100, '2009-01-05')
insert into #order values (6, 101, '2009-01-06')
insert into #order values (7, 101, '2009-01-07')
insert into #order …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

3
推荐指数
1
解决办法
563
查看次数

为什么不让`let`用于命名内部递归过程?

考虑以下函数来实现计算阶乘:[1]

(define fac-tail
  (lambda (n)
    (define fac-tail-helper
      (lambda (n ac)
        (if (= 0 n)
            ac
            (fac-tail-helper (- n 1) (* n ac)))))
    (fac-tail-helper n 1)))
Run Code Online (Sandbox Code Playgroud)

我试图用let内部定义重写:

(define fac-tail-2
  (lambda (n)
    (let ((fac-tail-helper-2
            (lambda (n ac)
              (if (= 0 n)
                  ac
                  (fac-tail-helper-2 (- n 1) (* n ac))))))
    (fac-tail-helper-2 n 1))))
Run Code Online (Sandbox Code Playgroud)

define时间没有错误,但执行结果为:

#;> (fac-tail-2 4)
Error: undefined variable 'fac-tail-helper-2'.
{warning: printing of stack trace not supported}
Run Code Online (Sandbox Code Playgroud)

如何使let版本有效?

方案版本是SISC v 1.16.6

[1]基于factorialSICP第1.2.1节的迭代版本http://mitpress.mit.edu/sicp/full-text/book/book-ZH-11.html#%_sec_1.2.1

lambda scheme factorial let

3
推荐指数
2
解决办法
892
查看次数

如何使用NOT IN子句添加超过1000个值

我有逗号分隔的ID,我想在NOT IN子句中使用..我正在使用oracle 11g.

select * from table where ID NOT IN (1,2,3,4,...,1001,1002,...)
Run Code Online (Sandbox Code Playgroud)

结果是

ORA-01795: maximum number of expressions in a list is 1000
Run Code Online (Sandbox Code Playgroud)

我不想使用临时表.我正在考虑这样做

select * from table1 where ID NOT IN (1,2,3,4,…,1000) AND 
ID NOT IN (1001,1002,…,2000)
Run Code Online (Sandbox Code Playgroud)

这个问题还有其他更好的解决方法吗?

sql oracle oracle11g

3
推荐指数
1
解决办法
1715
查看次数

如何用"〜"代替回家的路径?

如果我从命令行传入一个路径,"〜"会扩展到我的主目录:

(defn -main
  "I don't do a whole lot ... yet."
  [& args]
  (doseq [arg args]
    (println arg)))

britannia:uberjar srseverance$ java -jar args-0.1.0-SNAPSHOT-standalone.jar ~/158.clj 
/Volumes/Macintosh HD/Users/srseverance/158.clj
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用包含〜的路径文件,我找不到该文件.

user> (with-open [r (clojure.java.io/reader "~/158.clj")]
        (doall (line-seq r)))
FileNotFoundException ~/158.clj (No such file or directory)  java.io.FileInputStream.open0 (FileInputStream.java:-2)
Run Code Online (Sandbox Code Playgroud)

如何使用"〜/ 158.clj"之类的字符串并获取clojure.java.io/reader可以使用的字符串,例如"/ Volumes/Macintosh HD/Users/srseverance/158.clj"?

clojure

3
推荐指数
1
解决办法
1104
查看次数

readline()在Java中返回null

我正在尝试在我的Java程序中读取stdin.我期待一系列数字后跟换行符,例如:

6  
9  
1  
Run Code Online (Sandbox Code Playgroud)

通过eclipse内置控制台提供输入时,一切顺利.但是当使用Windows命令行时,程序会打印:

Received '6'.  
Received 'null'.  
Invalid input. Terminating. (This line is written by another function that does an Integer.parseint()).  
Run Code Online (Sandbox Code Playgroud)

我的代码是:

static String readLineFromStdIn(){  
try{  
        java.io.BufferedReader stdin = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));  
        String input = new String();  
        input = stdin.readLine();  
        System.out.println("Received '" + input + "'");  
        return(input);  
    }catch (java.io.IOException e) {  
        System.out.println(e);   
    }  
    return "This should not have happened";  
}  
Run Code Online (Sandbox Code Playgroud)

有线索吗?

java stdin readline

2
推荐指数
1
解决办法
1万
查看次数

PLSQL /如何在关联数组的迭代期间添加值

我在程序PLSQL中需要这样的东西

 arrayCount:=parArray.Count;
 For i In 1 .. arrayCount Loop
    lsPar(i):=parArray(i);
 End Loop;
Run Code Online (Sandbox Code Playgroud)

可能吗?求求建议!:)

sql plsql varray

2
推荐指数
1
解决办法
2万
查看次数

在GNU Emacs中,什么是"[C-tab]"?

在GNU Emacs中,是什么[C-tab]?考虑:

(version)
"GNU Emacs 23.2.1 (i386-mingw-nt5.1.2600)
 of 2010-05-08 on G41R2F1"

(defun key-binding-test ()
  (interactive)
  (insert " key-binding-test called "))
Run Code Online (Sandbox Code Playgroud)

对于单个字母控制字符,必须在向量中使用字符常量:

(global-set-key [C-l] 'key-binding-test) ; does not work
(global-set-key [?\C-l] 'key-binding-test) ; works
Run Code Online (Sandbox Code Playgroud)

?\C-l可以在*scratch*缓冲区中进行评估:

?\C-l
12
Run Code Online (Sandbox Code Playgroud)

但要绑定C-Tab:

(global-set-key [?\C-tab] 'key-binding-test) ;does not work
    ; Debugger entered--Lisp error: (invalid-read-syntax "?")
(global-set-key [C-tab] 'key-binding-test) ; works
Run Code Online (Sandbox Code Playgroud)

当我尝试评估时C-tab:

C-tab ; Debugger entered--Lisp error: (void-variable C-tab)
Run Code Online (Sandbox Code Playgroud)

比较矢量的评估:

[?\C-l] ; input
[12]    ; result

[C-tab] ; …
Run Code Online (Sandbox Code Playgroud)

keyboard emacs elisp

1
推荐指数
1
解决办法
692
查看次数

比较两个日期字段时,"Literal与格式字符串不匹配"

我在这里有一种奇怪的行为,我希望有人可以向我解释.

我在查询中有两个字段.一个是通过拍摄转换为日期的数字字段to_date('01/01/1960', 'mm/dd/yyyy') + somethingorother.另一个是文本字段,其中包含至少一个非日期值,该值将转换为日期to_date(textField, 'mm/dd/rrrr').如果我运行查询,它运行正常.但是,如果我将查询括select * from ( ) where field1 > field2起来,则会出现"ORA-01861:文字与格式字符串不匹配"错误.如果我尝试排除拉回文本字段的子查询的where子句中的已知非日期值,则无效.

我知道没有代码几乎不可能搞清楚,但我想知道是否有人可以向我解释为什么没有过滤器它可以工作,但是当我添加它时会爆炸.谢谢.

oracle plsql

1
推荐指数
1
解决办法
4628
查看次数

如何使用SQL OUTER JOIN高效地加入巨型表

Oracle 10g 64位红帽企业Linux 5 64位

我目前可以访问规范化的第三方数据库.它们拥有大量数据,我的要求是通过连接大量表来公开物化VIEW.

表1:Example_Master列:MasterID(VARCHAR2(250))MasterName(VARCHAR2(250))行:9000万主键:MasterID

表2:Example_ChildA1列:ChildA1ID(VARCHAR2(250))MasterID(VARCHAR2(250))行数:2500万

表3:Example_ChildA1ID列:ChildA1ID(VARCHAR2(250))ChildA1Name(VARCHAR2(250))主键:ChildA1ID

表4:Example_ChildA2列:ChildA2ID(VARCHAR2(250))MasterID(VARCHAR2(250))行数:3500万

表5:Example_ChildA2ID列:ChildA2ID(VARCHAR2(250))ChildA2Name(VARCHAR2(250))主键:ChildA2ID

等等.,

每个子表可能有也可能没有等同于MASTERID的条目.所以我必须获得所有MASTERID及其相关的CHILD名称.如果任何Child没有等效值,则必须返回'NULL'.所以我现在在Materialized VIEW语法之下

 SELECT a.MasterName, c.ChildA1Name, e.ChildA2Name, g.ChildA3Name
 FROM 
 Example_Master a,
 Example_ChildA1 b,
 Example_ChildA1ID c,
 Example_ChildA2 d,
 Example_ChildA2ID e,
 Example_ChildA3 f,
 Example_ChildA3ID g
 WHERE 
 c.ChildA1ID(+) = b.ChildA1ID
 AND e.ChildA2ID(+) = d.ChildA2ID
 AND g.ChildA3ID(+) = f.ChildA3ID
 AND a.MasterID=b.MasterID (+)
 AND a.MasterID=d.MasterID (+)
 AND a.MasterID=f.MasterID (+)
Run Code Online (Sandbox Code Playgroud)

我必须加入另外5个像上面这样的子表,并且这个查询的成本已经变得如此巨大,以至于需要将近16分钟才能得到结果.有没有更好的方法来使用OUTER JOINS?如果您需要有关我的问题的更多详细信息,请告诉我.

谢谢!

sql oracle performance join oracle10g

1
推荐指数
1
解决办法
6339
查看次数