De næstrangerede og efterfølgende svar giver en metode til at gøre dette uden at binde søgeværdien to gange:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Bemærk, at dette kræver en dummy-værdi, der aldrig kan være gyldig kolonneværdi (det er "uden for båndet"); Jeg bruger den tomme streng. Hvis du ikke har en sådan værdi, skal du finde dig i at binde værdien to gange:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);