Jawaban peringkat kedua dan selanjutnya memberikan metode untuk melakukan ini tanpa mengikat nilai pencarian dua kali:
SELECT * FROM ROUTERS
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');
Perhatikan bahwa ini membutuhkan nilai dummy yang tidak akan pernah bisa menjadi nilai kolom yang valid (itu "di luar batas"); Saya menggunakan string kosong. Jika Anda tidak memiliki nilai seperti itu, Anda harus memasang nilai tersebut dua kali:
SELECT * FROM ROUTERS
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);