2017-06-21 23 views
0

私は風変わりな問題があります。私はチェックボックス、レポートテーブルを持っており、結果を返すためにチェックボックスまたは複数のチェックボックスをクリックしたいと思います。データベースでは、コロンで区切られたチェックボックスの結果のリストが保存されています。Oracle Apex 5 - where句のチェックボックスリストが機能しない、なぜですか?

「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 

enter image description here

答えて

2

データベース列に文字列が含まれように見えます ':B:C:' を。

P1_BENEFITS_TAGが 'A:B'、 'B:C'、 'A'、 'B'または 'C'のいずれかの値である場合、データベース行にその値が含まれ、INSTR式が返されます。 'A:B:C'には文字列 'A:C'が含まれていないため、INSTRは0を返します。

+0

論理の説明はありがとうございます。私はそれを過ぎるようにどのように提案しますか?私は頭を傷つけています –

+1

'P1_BENEFITS_TAG'の文字列を値のテーブル( 'A'、 'C​​')に変換する必要があると思います - [regexp_substr example here](https:// blogs。 oracle.com/aramamoo/how-to-split-comma-separated-string-and-pass-to-in-clause-of-select-statement) –

+0

こんにちはトニー、リンクありがとう。私はregexp_subtrとinstr @Tony Andrewsを使用することで、乱雑な方法でそれを解決することができました –

関連する問題