【问题标题】:Oracle APEX 5.0 - SQL query based on (multiple) checkbox valuesOracle APEX 5.0 - 基于(多个)复选框值的 SQL 查询
【发布时间】:2016-07-07 12:58:49
【问题描述】:

我有一个值列表,它作为一个列表工作。

select KEY, VALUE
from keytable
WHERE key = :LOV_KEYLIST

这工作得很好。

但是,如果我将 LOV 作为复选框,它根本不起作用。 这些复选框是一个新项目,我希望它们从我的交互式报告中更改我的选择查询。

如何选择多个复选框并仅显示复选框中的值适用的行?

谢谢。

【问题讨论】:

    标签: oracle checkbox oracle-apex


    【解决方案1】:

    因为它是多值 (val1:val2:val3:valN..), http://docs.oracle.com/cd/E14373_01/appdev.32/e13363/check_box.htm#CHDBGDJH

    试试这个:

    select KEY, VALUE
    from keytable
    -- check all posible values in checkbox item
    WHERE (instr(':'||:LOV_KEYLIST||':',':'||key||':') >0 
             -- if value is null show All rows
             or :LOV_KEYLIST is null)
    

    【讨论】:

    • 这很棒而且效果很好。你能解释一下 INSTR 的语法吗?我很难弄清楚。
    • INSTR 函数在字符串中搜索子字符串。该函数返回一个整数,指示字符串中出现的第一个字符的字符位置。在这种情况下,如果 INSTR > 0 表示,什么字符串包含子字符串(您的 ID_LIST - 字符串,ID - 子字符串)请阅读官方文档docs.oracle.com/cd/B19306_01/server.102/b14200/functions068.htm
    • 好的,但是由于它返回一个可能大于 0 的整数,所以 select 究竟如何知道要选择哪些行?对我来说,它看起来像:“... WHERE 2 >0”作为示例。
    • instr(..) > 0 表示密钥存在于密钥列表中。 (1:2:3:4 - 您的复选框值,3 - 您在表格中的 fkey)。如果 INSTR 在字符串 ':1:2:3:4:' 中找到子字符串 ':3:' 然后返回位置 5. 5 > 0 这就是为什么行输出
    【解决方案2】:

    你可以试试代码

     column in (
              
              select regexp_substr(:P100_VERSION,'[^:]+', 1, level) ID from dual
    connect by regexp_substr(:P100_VERSION, '[^:]+', 1, level) is not null
              
              
            )
    

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2019-06-30
      • 1970-01-01
      相关资源
      最近更新 更多