2番目以降の回答は、検索値を2回バインドせずにこれを行う方法を示しています。
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
これには、有効な列値になることのないダミー値が必要であることに注意してください(これは「帯域外」です)。空の文字列を使用しています。そのような値がない場合は、値を2回バインドすることに我慢する必要があります。
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);