如何在oracle中使用select with if条件?

swa*_*thy 8 sql plsql case-when

我的要求是从复杂查询中获取一个数字并检查num = desiredNum.

如果它等于desiredNum,那么我必须执行另一组select语句,

有什么方法可以在查询中实现这一点而不是编写函数吗?

例如:

select case when val =2  
then select val1 from table1  
else 'false'  
from (select val from table)  
Run Code Online (Sandbox Code Playgroud)

这可能吗 ??

Ric*_*iwi 13

select case when val=2 then val1 else val end as thevalue
from table1
Run Code Online (Sandbox Code Playgroud)

我假设你的意思是val和val1都来自同一个表,但是当val = 2时,改为使用val1.如果你实际上有两个表,并且它们每个只有一个记录,那么

select
    case when val=2
    then (select val1 from table1)
    else 'false'
    end
from table
Run Code Online (Sandbox Code Playgroud)


Dan*_*ams 0

我不是 100% 我明白你需要什么。但我认为你可以使用联合来做到这一点:

create table theValues ( theValue integer)
create table table1 ( value1 integer)
create table table2 ( value2 integer)


INSERT INTO theValues (thevalue) VALUES (2)
INSERT INTO table1 ( value1 ) VALUES (17)
INSERT INTO table2 ( value2 ) VALUES (8)


SELECT value1 from table1 WHERE EXISTS (SELECT theValue from theValues WHERE theValue != 2)
UNION ALL 
SELECT value2 from table2 WHERE EXISTS (SELECT theValue from theValues WHERE theValue  = 2)
Run Code Online (Sandbox Code Playgroud)

在本例中,“幻数”为 2。如果 theValues 表查询返回 2,则您将获得表 2 的结果,否则您将获得表 1 的结果。

干杯,丹尼尔