2014-08-29 83 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

相关问题