Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment écrire une comparaison sécurisée nulle <=> en SQL pur ?

Les réponses de deuxième rang et suivantes donnent une méthode pour le faire sans lier deux fois la valeur de recherche :

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

Notez que cela nécessite une valeur fictive qui ne peut jamais être une valeur de colonne valide (c'est-à-dire "hors bande"); J'utilise la chaîne vide. Si vous n'avez pas une telle valeur, vous devrez accepter de lier la valeur deux fois :

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