Die zweitplatzierten und nachfolgenden Antworten geben eine Methode, dies zu tun, ohne den Suchwert zweimal zu binden:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Beachten Sie, dass dies einen Dummy-Wert erfordert, der niemals ein gültiger Spaltenwert sein kann (das ist "außerhalb des Bandes"); Ich verwende die leere Zeichenfolge. Wenn Sie keinen solchen Wert haben, müssen Sie den Wert zweimal binden:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);