0

我有一个古怪的问题。我有一个复选框,一个报告表,我想单击一个复选框或多个复选框以返回结果。在数据库中,我保存了一个由冒号分隔的复选框结果列表:

除非我选中“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

在此处输入图像描述

4

1 回答 1

2

看起来您的数据库行包含字符串“A:B:C:”。

当 :P1_BENEFITS_TAG 是任何值 'A:B'、'B:C'、'A'、'B' 或 'C' 时,数据库行“包含”该值并且您的INSTR表达式将返回一个 > 0 的数字。

但是,“A:B:C”不包含字符串“A:C”,因此 INSTR 将为此返回 0。

于 2017-06-21T14:11:35.397 回答