Oracle Apex 5 - where 子句中的复选框列表不起作用,为什么?
Oracle Apex 5 - Checkbox list in where clause not working, why?
我有一个古怪的问题。我有一个复选框,一个报告 table,我想单击一个或多个复选框以获得 return 结果。在数据库中,我保存了一个由冒号分隔的复选框结果列表:
一切正常,除非我选中 'A' 和 'C' 框。这是数据库中的第一个也是最后一个结果。我可以单击 A 和 B,或仅单击 A,或仅单击 C 或 C 和 B,但当我单击 A 和 C 时,它不起作用。
有线索吗?
select ...
from ...
where
AND (CASE WHEN :P1_BENEFITS_TAG IS NOT NULL
THEN instr( ':'|| UPPER(b.BENEFITS_TAGS)||':',
':'|| UPPER(:P1_BENEFITS_TAG) ||':' )
ELSE 1
END) > 0
您的数据库行似乎包含字符串 'A:B:C:'。
当 :P1_BENEFITS_TAG 是任何值 'A:B'、'B:C'、'A'、'B' 或 'C' 时,则数据库行"contains" 该值和您的 INSTR
表达式将 return 一个 > 0 的数字。
但是,'A:B:C' 不包含字符串 'A:C',因此 INSTR 将为 return 0。
我有一个古怪的问题。我有一个复选框,一个报告 table,我想单击一个或多个复选框以获得 return 结果。在数据库中,我保存了一个由冒号分隔的复选框结果列表:
一切正常,除非我选中 'A' 和 'C' 框。这是数据库中的第一个也是最后一个结果。我可以单击 A 和 B,或仅单击 A,或仅单击 C 或 C 和 B,但当我单击 A 和 C 时,它不起作用。
有线索吗?
select ...
from ...
where
AND (CASE WHEN :P1_BENEFITS_TAG IS NOT NULL
THEN instr( ':'|| UPPER(b.BENEFITS_TAGS)||':',
':'|| UPPER(:P1_BENEFITS_TAG) ||':' )
ELSE 1
END) > 0
您的数据库行似乎包含字符串 'A:B:C:'。
当 :P1_BENEFITS_TAG 是任何值 'A:B'、'B:C'、'A'、'B' 或 'C' 时,则数据库行"contains" 该值和您的 INSTR
表达式将 return 一个 > 0 的数字。
但是,'A:B:C' 不包含字符串 'A:C',因此 INSTR 将为 return 0。