如何在Oracle中的case语句中添加两个用逗号分隔的引号的字符
Posted
技术标签:
【中文标题】如何在Oracle中的case语句中添加两个用逗号分隔的引号的字符【英文标题】:How add two characters with quotes separated by comma in case statement in Oracle 【发布时间】:2020-02-26 17:11:31 【问题描述】:我有一个场景,当案例验证成功时,我从案例语句中选择两个字符“P”,“E”,即“ALL”=“ALL” 以下是我想要实现的目标:
select location,
grade,
City,
process_flag,
from table_v
where process_flag in (
Case
when :process_type = 'Processed' then 'P'
when :process_type = 'ERROR' then 'E'
when :process_type = 'ALL' then 'P','E'
ELSE process_flag
END;
Process_type 可以传递为 'Processed'、'ERROR'、'ALL'
怎样才能实现?
【问题讨论】:
【参考方案1】:您可以使用or
ed 条件:
where
:process_type = 'Processed' and process_flag = 'P'
or :process_type = 'ERROR' and process_flag = 'E'
or :process_type = 'ALL' and process_flag in ('P', 'E')
【讨论】:
【参考方案2】:您可以在IN
子句中使用多个值:
WHERE ( :process_type, process_flag ) IN (
( 'Processed', 'P' ),
( 'ERROR', 'E' ),
( 'ALL', 'P' ),
( 'ALL', 'E' ),
)
如果你想匹配 CASE
语句的 ELSE
子句,那么:
WHERE ( :process_type, process_flag ) IN (
( 'Processed', 'P' ),
( 'ERROR', 'E' ),
( 'ALL', 'P' ),
( 'ALL', 'E' ),
)
OR :process_type NOT IN ( 'Processed', 'ERROR', 'ALL' )
【讨论】:
以上是关于如何在Oracle中的case语句中添加两个用逗号分隔的引号的字符的主要内容,如果未能解决你的问题,请参考以下文章