Estoy tratando de implementar parámetros opcionales en un procedimiento almacenado que tengo, pero me encuentro con un problema. He aquí una consulta simplificada para ilustrar el tema:SQL Coalesce en la cláusula WHERE
SET ANSI_NULLS OFF
DECLARE @MiddleName VARCHAR(20);
SET @MiddleName = NULL;
SELECT * FROM [Customer]
WHERE [LastName] = 'Torres'
AND [MiddleName] = COALESCE(@MiddleName, [MiddleName])
Cuando ejecuto esta consulta que necesito para obtener una fila de atrás, porque uno tiene Torres NULL en la columna de la [MiddleName]. Pero la consulta devuelve cero filas. El uso de IFNULL() produce el mismo resultado. Al investigar COALESCE, tuve la impresión de que se devolvería NULL si todas las expresiones son NULL. Como no soy un experto en SQL, supongo que me falta algo, pero qué es ...
Gracias de antemano por cualquier ayuda.
Estoy tratando de interpretar lo que está diciendo correctamente. Creo que te refieres a lo siguiente: cómo se combina para decir todas las filas si nulo, de lo contrario solo las filas coinciden. Si ese es el caso, haría algo como COALESCE (@MiddleName, '') = '' OR @ MiddleName = [MiddleName] en la cláusula where. – geoffrobinson