1

select ステートメントの場合、次のように、where 条件の一部を外部の構成ファイルでパラメーターとして設定します (COL2は文字列値で埋められます)。

SELECT COL1
      ,COL2
FROM TABLE1
WHERE COL2 = $external_parameter

ここで、外部パラメーターをリストにする必要がある、より複雑なケースがあります。の値がCOL2リストにある場合は常に選択する必要がありますが、リストが提供されていない場合や何らかの「空の」タグがある場合は、すべての値を再度選択する必要があります。私はアイデアを思いつきましたが、そのようには機能しません:

SELECT COL1
      ,COL2
FROM TABLE1
WHERE $external_list = ('') or COL2 IN $external_list

このように、ステートメントはCOL2、空のリストが提供された場合のすべての要素に対して true になり、塗りつぶされたリストが提供された場合、リストと一致するリスト内のすべての要素に対して true になります。

ただし、塗りつぶされたリストを提供すると、where ステートメントの前半の比較では機能しません。

('entry_a', 'entry_b') = ('')

それを機能させるクエリはありますか-1行のWHEREステートメントで最適ですか?

4

3 に答える 3

0

これを試して

 IF  $EXTERNAL_PARAMETER = ''
 SET $EXTERNAL_PARAMETER = NULL

SELECT COL1
    ,COL2
FROM TABLE1
WHERE COL2 = ISNULL($EXTERNAL_PARAMETER, COL2 ) 
于 2016-05-23T09:00:55.057 に答える
0

この方法を試してください

SELECT COL1
    ,COL2
FROM TABLE1
WHERE COL2 IN (
            CASE 
            WHEN $EXTERNAL_PARAMETER = ''
                THEN COL2 
            ELSE $EXTERNAL_PARAMETER
            END)
于 2016-05-23T08:52:31.637 に答える