如何在SQL CASE表达式中返回多个值

在Oracle数据库开发中,使用CASE...THEN语句时可能需要根据条件返回多个值。可以通过结合sys.odcivarchar2list函数实现这一需求。例如,当当前时间秒数大于30时,CASE表达式返回'Sent';否则返回'New'和'Sent'。此用法在查询和过滤数据时非常有用,如在WHERE子句中与IN操作符配合使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle数据库开发中CASE...THEN子句有时需要返回多个值用于判断,如何做才能在CASE...THEN表达式中返回多个值呢,具体参考下面的演示:
SQL> select case
  2           when to_char(sysdate, 'SS') > 30 then sys.odcivarchar2list('Sent')
  3           else sys.odcivarchar2list('New', 'Sent')
  4         end options
  5    from dual;

OPTIONS
--------------------------------------------------------------------------------
ODCIVARCHAR2LIST('Sent')

SQL> /

OPTIONS
--------------------------------------------------------------------------------
ODCIVARCHAR2LIST('New', 'Sent')
SQL> select *
  2    from table(
  3            select case when to_char(sysdate,'SS') > 30 then sys.odcivarchar2list('Sent')
  4                        else sys.odcivarchar2list('New','Sent')    
  5                   end options
  6            from dual
  7              );

COLUMN_VALUE
--------------------------------------------------------------------------------
New
Sent
SQL> /

COLUMN_VALUE
--------------------------------------------------------------------------------
Sent
SQL> select *
from emp
where report_status in 
(
select *
from table(
select
case
when to_char(sysdate,'SS') > 30 then sys.odcivarchar2list('Sent')
else sys.odcivarchar2list('New','Sent')
end options
from dual
)
) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值