Tengo que hacer una búsqueda usando un procedimiento almacenado que recibe varios campos. Cada uno de ellos puede ser nulo y no se tendría en cuenta en la búsqueda. Lo que hice tenía sentido en mi cabeza pero no funcionaba bien porque por lo visto SQL no garantiza el orden de ejecución de las dos partes de un OR.
SELECT
...bla bla bla
FROM bla bla bla
WHERE
(@Email is null OR customer.Email = @Email) AND
(@PosCode is null OR customer.PostCode = @PostCode) AND
(@Name is null OR customer.Name= @Name) AND
(@Surname is null OR customer.Surname= @Surname)
Para mí esto iba así: Si el email venía a NULL el OR ya se cumplía y por tanto no lo comparaba con el del customer. Si era distinto de null entonces sí lo comparaba con el del Customer. Así para todos los parámetros. Pero por lo visto no va. ¿Cómo puedo hacerlo? Gracias.