2016-07-07 82 views
2

我有一个值列表,它作为一个列表工作。Oracle APEX 5.0 - 基于(多个)复选框值的SQL查询

select KEY, VALUE 
from keytable 
WHERE key = :LOV_KEYLIST 

这工作得很好。

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

如何选择多个复选框,并只显示复选框中的值应用的行?

谢谢。

回答

3

,因为它多值(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) 
+0

这是伟大的,完美的作品。你能解释一下INSTR的语法吗?我很难搞清楚。 – OldMcDonald

+1

INSTR为substring函数搜索字符串。该函数返回一个整数,指示字符串中字符的位置,该字符串是此事件的第一个字符。在这种情况下,如果INSTR> 0意味着什么字符串包含子字符串(您的ID_LIST - 字符串,ID - 子字符串)在官方文档中阅读更多https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions068 .htm –

+0

好吧,但是由于它返回的整数可能大于0,select究竟如何知道要选择哪些行?对我来说,它看起来像:“... WHERE 2> 0”为例。 – OldMcDonald