sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo escribir una comparación segura nula <=> en SQL puro?

Las respuestas en segundo lugar y posteriores brindan un método para hacer esto sin vincular el valor de búsqueda dos veces:

SELECT * FROM ROUTERS 
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');

Tenga en cuenta que esto requiere un valor ficticio que nunca puede ser un valor de columna válido (eso es "fuera de banda"); Estoy usando la cadena vacía. Si no tiene ningún valor de este tipo, tendrá que aguantar vincular el valor dos veces:

SELECT * FROM ROUTERS 
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);