De andra rankade och efterföljande svaren ger en metod att göra detta utan att binda sökvärdet två gånger:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Observera att detta kräver ett dummyvärde som aldrig kan vara ett giltigt kolumnvärde (det är "utanför bandet"); Jag använder den tomma strängen. Om du inte har något sådant värde måste du stå ut med att binda värdet två gånger:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);