¿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?

Respuestas a la pregunta(5)

Su respuesta a la pregunta