2014-08-29 144 views
0

當我嘗試執行此代碼而沒有大小寫,並且正如...和TRANSFORMER IN(SELECT REGEXP_SUBSTR ...)時,它的工作原理。然而,如果TID爲NULL,則添加案例以抓取所有內容會給我帶來錯誤。獲取'ORA-01427:單行子查詢返回多個行'錯誤

(select t.DAY_DATE as D, t.* from pplco_transformer_kva t where 

--NORMALLY '03-MAR-14' IS A VARIABLE 
DAY_DATE = TO_DATE('03-MAR-14')and TRANSFORMER IN(

    --NORMALLY '26113S36753,25761S36662' IS A VARIABLE 
    CASE WHEN '26113S36753,25761S36662' IS NULL THEN(

    (t.TRANSFORMER) 

)ELSE(
    SELECT REGEXP_SUBSTR('26113S36753,25761S36662', '[^,]+', 1,LEVEL) 
    FROM DUAL CONNECT BY 
    regexp_substr('26113S36753,25761S36662', '[^,]+', 1, level) is 
    not null) 
    END 
) 
); 
+0

您是否試圖執行''從雙''選擇regexp_substr(),看看它是否是預期的結果? – 2014-08-29 21:01:11

回答

2

case語句不返回變量列表。第一部分也不會做你的想法。以下是我認爲你想要的邏輯:

where DAY_DATE = TO_DATE('03-MAR-14') and 
     ('26113S36753,25761S36662' IS NULL OR 
     '26113S36753,25761S36662' IS NOT NULL AND 
     t.TRANSFORMER IN (SELECT REGEXP_SUBSTR('26113S36753,25761S36662', '[^,]+', 1,LEVEL) 
         FROM DUAL CONNECT BY 
         regexp_substr('26113S36753,25761S36662', '[^,]+', 1, level) is not null 
         ) 
    ) 
+0

正是我需要的。謝謝! – wbrugato 2014-08-29 21:14:52

相關問題