Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie schreibe ich einen nullsicheren Vergleich <=> in reinem SQL?

Die zweitplatzierten und nachfolgenden Antworten geben eine Methode, dies zu tun, ohne den Suchwert zweimal zu binden:

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

Beachten Sie, dass dies einen Dummy-Wert erfordert, der niemals ein gültiger Spaltenwert sein kann (das ist "außerhalb des Bandes"); Ich verwende die leere Zeichenfolge. Wenn Sie keinen solchen Wert haben, müssen Sie den Wert zweimal binden:

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