2012-05-02 167 views
0

我正在使用CASE & DECODE。 CASE的語法是:有多少WHEN .... THEN條件允許在SQL CASE中

CASE [ expression ] 
    WHEN condition_1 THEN result_1 
    WHEN condition_2 THEN result_2 
    ... 
    WHEN condition_n THEN result_n 
    ELSE result 
END 

萬一要是我們寫任何條件,我們可以使用WHEN ... THEN寫。所以,你能告訴我在一個案例中我們可以寫多少次......當時的條件。 是他們的任何限制寫入WHEN .... THEN條件在一個案例中。

感謝您的回覆。 其實我得到了我的問題的答案。 我得到了我的問題的答案。

其實我們在一個CASE中只能寫255個比較。 每個WHEN ... THEN子句被認爲是2個比較。

我們可以在一個CASE語句中編寫255個比較。 每個WHEN ... THEN子句被認爲是2個比較。

相同的限制是應用於解碼。

DECODE函數中參數的最大數量爲255. 其中包括: EXPRESSION,SEARCH和RESULT參數。

+0

以前曾詢問過此問題:http://stackoverflow.com/q/1160459/1359231 – joshp

+1

@joshp:您的鏈接問題涉及MySQL,這是針對Oracle的。 –

+0

你說得對。錯誤。 – joshp

回答

-1

這是沒有限制的,你可以盡你所能地做... 但你的目標/方法是什麼?我想你應該在解決模型問題時解決這樣一個大問題。

+0

你有這個答案的來源嗎?以前的答案提出了一個限制不知道誰是對的。當然,我相信無論文件說什麼,都會有一個實際的限制。 – joshp

+0

當然,限制是你的資源。但是,沒有一般限制人可以添加什麼塊。我搜查了MSN Tech Net,到目前爲止沒有發現任何限制提示。 – YvesR

+1

@YvesR:當這個問題被標記爲Oracle時,爲什麼要搜索MSN? –

7

從11.2手冊就在http://docs.oracle.com/cd/E11882_01/server.112/e41084/expressions004.htm#SQLRF20037

的參數在CASE表達式的最大數目爲65535。所有表達式都計入此限制,包括簡單CASE表達式和可選ELSE表達式的初始表達式。每個WHEN ... THEN對都被視爲兩個參數。爲了避免超過這個限制,你可以嵌套CASE表達式,以便RETURN_EXPR本身就是一個CASE表達式

(重點煤礦)

編輯
顯然,這個限制已經顯著的11.2增加,因爲在11.1和10.2手冊限制記錄爲255

http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm#i1033392
http://docs.oracle.com/cd/B28359_01/server.111/b28286/expressions004.htm#i1033392

+0

你可能會補充說在10.2中記錄的限制是255:http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm –

+0

@DavidAldridge:謝謝,我補充道這對我的答案。 –