ORACLE:使用 CASE-WHEN-语句的结果
ORACLE: USE RESULT OF CASE-WHEN-STATEMENT
我有一个巨大的查询,我想知道它是否在 Oracle 中可能
获取 case-when-statement 的结果并将其用于比较?我的 CASE-STATEMENT 在 Select-Statement 中声明,看起来像这样。
SELECT........
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST;
现在我想得到这个case-statement的结果并在where部分使用它?可能吗? (对不起,这可能是个愚蠢的问题)
您可以在 where
子句中使用 case
语句,例如:
select * from table
where table.field = (CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END)
这会将 case
语句返回的值与 table 字段进行比较。
如果您在行内视图或常见的 table 表达式(又名 WITH
子句)中定义 CASE
语句,则可以通过您提供的任何别名来引用它它。
例如(内联视图):
SELECT ...
FROM ( SELECT .....
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST
FROM...
) v
WHERE v.test = 'TEST2';
作为一个常见的 table 表达式,它将是:
WITH cte AS ( SELECT........
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST
FROM ... )
SELECT ...
FROM cte
WHERE test = 'TEST2';
我有一个巨大的查询,我想知道它是否在 Oracle 中可能 获取 case-when-statement 的结果并将其用于比较?我的 CASE-STATEMENT 在 Select-Statement 中声明,看起来像这样。
SELECT........
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST;
现在我想得到这个case-statement的结果并在where部分使用它?可能吗? (对不起,这可能是个愚蠢的问题)
您可以在 where
子句中使用 case
语句,例如:
select * from table
where table.field = (CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END)
这会将 case
语句返回的值与 table 字段进行比较。
如果您在行内视图或常见的 table 表达式(又名 WITH
子句)中定义 CASE
语句,则可以通过您提供的任何别名来引用它它。
例如(内联视图):
SELECT ...
FROM ( SELECT .....
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST
FROM...
) v
WHERE v.test = 'TEST2';
作为一个常见的 table 表达式,它将是:
WITH cte AS ( SELECT........
(CASE
WHEN (Select 1 from DUAL) = 1 THEN 'TEST'
ELSE 'TEST2'
END) AS TEST
FROM ... )
SELECT ...
FROM cte
WHERE test = 'TEST2';