sql >> Databáze >  >> RDS >> Oracle

PreparedStatement má hodnotu null v klauzuli Where bez podmíněných hodnot if (dynamický dotaz) nebo nesmyslných hodnot

Vaše pracovní řešení je v pořádku (a podobné tomu, co jsem použil dříve ). Pokud chcete svázat pouze jednou, můžete použít CTE nebo vložené zobrazení k poskytnutí hodnoty skutečnému dotazu:

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

Existuje tedy pouze jeden zástupný symbol pro vazbu.

Ve skutečnosti však nevidím problém s větví na straně Java, pokud váš skutečný dotaz není mnohem komplikovanější a vedl by k významné duplicitě.



  1. Číslo řádku na skupinu v mysql

  2. Chyba dotazu SQL – sloupec nemůže mít hodnotu null

  3. Jak aktualizovat data pomocí onclick i CHECKBOX bez tlačítka odeslat v php a mysql

  4. init skripty mySQL neběží s docker-compose