Odpovědi na druhém místě a následující odpovědi poskytují způsob, jak toho dosáhnout, aniž by se hledaná hodnota vázala dvakrát:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Všimněte si, že to vyžaduje fiktivní hodnotu, která nikdy nemůže být platnou hodnotou sloupce (to je "mimo pásmo"); Používám prázdný řetězec. Pokud žádnou takovou hodnotu nemáte, budete se muset smířit s vázáním hodnoty dvakrát:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);