Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como escrever uma comparação segura nula <=> em SQL puro?


As respostas em segundo lugar e subsequentes fornecem um método para fazer isso sem vincular o valor de pesquisa duas vezes:
SELECT * FROM ROUTERS 
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');

Observe que isso requer um valor fictício que nunca pode ser um valor de coluna válido (que está "fora de banda"); Estou usando a string vazia. Se você não tiver esse valor, terá que aturar a vinculação do valor duas vezes:
SELECT * FROM ROUTERS 
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);