sql >> データベース >  >> RDS >> Oracle

条件付き(動的クエリ)またはぎこちない値がない場合、Where句でPreparedStatementがnullになります

    あなたの作業ソリューションは問題ありません(そして以前に使用したものと同様 )。一度だけバインドする場合は、CTEまたはインラインビューを使用して、実際のクエリに値を提供できます。

    WITH CTE AS (
        SELECT ? AS REAL_VALUE FROM DUAL
    )
    SELECT C.*   -- but not * really, list all the columns
    FROM CTE
    JOIN CUSTOMERS C
    ON (CTE.REAL_VALUE IS NULL AND C.CUSTOMER_ID IS NULL)
        OR C.CUSTOMER_ID = CTE.REAL_VALUE
    

    したがって、バインドするプレースホルダーは1つだけです。

    ただし、実際のクエリがはるかに複雑で重大な重複につながる場合を除いて、Java側のブランチに問題はありません。



    1. MySQLの不規則なクエリ時間

    2. MySQLで正規表現を使用する方法は?

    3. Laravelビジターカウンター

    4. JSONファイルをPostgreSQLにインポートするにはどうすればよいですか?