PL/SQL 使用 between 比较更多值

PL/SQL compare more values using between

我的查询有问题。如果它在 2 列之间,我需要比较超过 50 个值。例如,我有两个 varchar 列:

col1   col2
-----------
1000   1999
2000   2999
3000   3999

我有价值观1001, 2001, 3001, 4001。 如果值在 col1 和 col2 之间,我需要 table 输入数据和 YN 的列:

input  Y/N
-------------
1001   Y
2001   Y
3001   Y
4001   N

我尝试使用 IN(),但不能用于 between。 你能给我一个答案吗? 谢谢

给你。

with 
   /**You main table data**/
    tabl (col1, col2) as( select 1000 ,1999 from dual
                           UNION ALL
                           select 2000 ,2999 from dual
                           UNION ALL
                           select 3000 ,3999 from dual
                          ),
    /**Your Input tale data**/
    tabl_inp(val)as ( select 1001 from dual 
                      UNION ALL
                      select 2001 from dual
                      UNION ALL
                      select 3001 from dual
                      UNION ALL
                      select 4001 from dual
            )                                                       
select  val  INPUT,
        case 
         when (val >= col1 and val <= col2) then
           'Y'
         ELSE
           'N'
        END "Y/N"
from tabl 
right join tabl_inp
ON val >= col1 and val <= col2 ;