Oracle11g 甲骨文中的In子句

Oracle11g 甲骨文中的In子句,oracle11g,Oracle11g,我有这样的选择查询 SELECT * FROM ACTITIVY WHERE CODE in ('L','D') 我没有硬记录参数中的值,而是创建了一个参数表。参数表具有以下值 CODE | CODE_VAL | ACTIVE TRIGGER_XM | 'L','D' | Y 因此,当我重写查询时,如下所示 select * from ops_ACTITIVY WHERE CODE IN ( SELECT CODE_VAL FROM OPS_CON

我有这样的选择查询

SELECT * FROM ACTITIVY WHERE CODE in ('L','D')
我没有硬记录参数中的值,而是创建了一个参数表。参数表具有以下值

CODE         |   CODE_VAL  | ACTIVE 
TRIGGER_XM   |  'L','D'    |   Y
因此,当我重写查询时,如下所示

select * from ops_ACTITIVY WHERE CODE IN  ( 
SELECT CODE_VAL FROM OPS_CONFIG_PARAMETER 
WHERE CODE='TRIGGER_XML' AND ACTIVE='Y')
如何解决这个问题根本不管用???

您可以这样尝试:

select * from ops_ACTITIVY t1
WHERE t1.CODE IN ( SELECT CODE_VAL FROM OPS_CONFIG_PARAMETER t2 
WHERE t2.CODE='TRIGGER_XML' AND t2.ACTIVE='Y' )
select * from activity a where (
    select instr(b.code_val, a.code)
    from param b
    where b.code = 'TRIGGER_XM'
    AND active = 'Y'
) > 0;

在检查另一个字符串中是否存在字符串时,可以尝试以下操作:

select * from ops_ACTITIVY t1
WHERE t1.CODE IN ( SELECT CODE_VAL FROM OPS_CONFIG_PARAMETER t2 
WHERE t2.CODE='TRIGGER_XML' AND t2.ACTIVE='Y' )
select * from activity a where (
    select instr(b.code_val, a.code)
    from param b
    where b.code = 'TRIGGER_XM'
    AND active = 'Y'
) > 0;
但它很可能只在使用singlechar代码的情况下才起作用


为我工作过:

您真正使用的是哪张桌子?行动还是行动

假设这些表相同,我建议您的参数表具有以下值:

| CODE          | CODE_VAL  | ACTIVE    |
| -----------   ----------- -------------
| TRIGGER_XM    | L         | Y         |
| TRIGGER_XM    | D         | Y         |
它更易于管理,而且我认为分离L和D的代码值更有意义,以防您只需要选择其中一个

现在,下面的查询肯定会从ops_activity表中获取具有“L”和“D”值的代码:


你到底在用哪张桌子?行动还是行动?