当我尝试在没有大小写的情况下执行此代码时,只需...和TRANSFORMER IN(SELECT REGEXP_SUBSTR ...)就可以了。但是,如果TID为NULL,则添加案例以获取所有内容会给我错误..
(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 :(得分: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
)
)