PL/SQL在CASE语句中返回列表
我需要一个CASE语句来返回字符串列表,但我遇到了一些语法问题。生成的SQL应该是这样的:PL/SQL在CASE语句中返回列表,sql,oracle,case,Sql,Oracle,Case,我需要一个CASE语句来返回字符串列表,但我遇到了一些语法问题。生成的SQL应该是这样的: SELECT * FROM FRUIT WHERE COLOR IN ('RED', 'YELLOW') 我想做的事没有用: SELECT * FROM FRUIT WHERE COLOR IN CASE WHEN TYPE = *something* THEN ('RED', 'YELLOW') ELSE ('GREEN') END 这项工作: SELECT * FROM F
SELECT * FROM FRUIT WHERE COLOR IN ('RED', 'YELLOW')
我想做的事没有用:
SELECT * FROM FRUIT WHERE COLOR IN
CASE
WHEN TYPE = *something*
THEN ('RED', 'YELLOW')
ELSE ('GREEN')
END
这项工作:
SELECT * FROM FRUIT WHERE COLOR IN
CASE
WHEN TYPE = 1
THEN 'RED'
ELSE 'GREEN'
END
我得到的错误是:
ORA-00907 missing right parenthesis
当我使用multiple COLOR='X'或COLOR='Y'时,它可以工作,但我想知道是否有一种方法可以只使用一个CASE语句。提前感谢。案例语句只能返回一个值。我想你不需要CASE语句,你可以用IN-operation代替CASE,就像这样
SELECT *
FROM FRUIT
WHERE TYPE = 'something' AND COLOR IN ('RED', 'YELLOW')
OR TYPE <> 'something' AND COLOR IN ('GREEN')
Case语句只能返回一个值。我想你不需要CASE语句,你可以用IN-operation代替CASE,就像这样
SELECT *
FROM FRUIT
WHERE TYPE = 'something' AND COLOR IN ('RED', 'YELLOW')
OR TYPE <> 'something' AND COLOR IN ('GREEN')
只需使用布尔逻辑即可。使用大小写表达式没有好处。为什么不使用并集呢?当您需要从一个表中进行查询,但case where子句-unions是最常见的方式。您的预期输出是什么?@Used_By_已经是了,我将采用这种方法。谢谢。@Ychdziu我正在处理的真正的SQL表达式比这个例子要长得多,所以我想要一个更小、更易于维护的表达式。谢谢你的回复。只需使用布尔逻辑即可。使用大小写表达式没有好处。为什么不使用并集呢?当您需要从一个表中进行查询,但case where子句-unions是最常见的方式。您的预期输出是什么?@Used_By_已经是了,我将采用这种方法。谢谢。@Ychdziu我正在处理的真正的SQL表达式比这个例子要长得多,所以我想要一个更小、更易于维护的表达式。谢谢你的回复。哦,我明白了。我将使用这种方法。谢谢你,我会接受你的回答。哦,我明白了。我将使用这种方法。谢谢,我会接受你的回答。