Odpowiedzi na drugim miejscu i kolejne dają metodę, aby to zrobić bez dwukrotnego wiązania wartości wyszukiwania:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Zauważ, że wymaga to fikcyjnej wartości, która nigdy nie może być prawidłową wartością kolumny (czyli „poza pasmem”); Używam pustego ciągu. Jeśli nie masz takiej wartości, będziesz musiał pogodzić się z dwukrotnym wiązaniem wartości:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);