Mysql
 sql >> Database >  >> RDS >> Mysql

Come scrivere un confronto sicuro nullo <=> in SQL puro?

La seconda e le successive risposte forniscono un metodo per farlo senza vincolare due volte il valore di ricerca:

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

Nota che ciò richiede un valore fittizio che non può mai essere un valore di colonna valido (che è "fuori banda"); Sto usando la stringa vuota. Se non disponi di tale valore, dovrai accettare di vincolare il valore due volte:

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