¿Cómo difieren los operadores SQL "IS" y "="?
Estoy creando algunas declaraciones preparadas que usan valores parametrizados. Como ejemplo
SELECT * FROM "Foo" WHERE "Bar"=@param
Algunas veces@param
puede serNULL
. En tales casos, quiero que la consulta devuelva registros dondeBar
esNULL
, pero la consulta anterior no lo hará. He aprendido que puedo usar laIS
operador para esto. En otras palabras
SELECT * FROM "Foo" WHERE "Bar" IS @param
Aparte del tratamiento diferente deNULL
, ¿hay alguna otra forma en que las dos declaraciones anteriores se comporten de manera diferente? Y si@param
no esNULL
, pero es, digamos,5
? Está usando laIS
operador en ese caso una cosa segura (y sensata) que hacer? ¿Hay algún otro enfoque que debería tomar?