Sto provando a implementare i parametri facoltativi in una procedura memorizzata che ho ma sto correndo in un problema. Ecco una query semplificato per illustrare il problema:SQL Coalesce nella clausola WHERE
SET ANSI_NULLS OFF
DECLARE @MiddleName VARCHAR(20);
SET @MiddleName = NULL;
SELECT * FROM [Customer]
WHERE [LastName] = 'Torres'
AND [MiddleName] = COALESCE(@MiddleName, [MiddleName])
Quando faccio funzionare questa domanda ho bisogno di ottenere una fila indietro perché uno Torres ha NULL nella colonna [MiddleName]. Ma la query restituisce zero righe. L'uso di IFNULL() produce lo stesso risultato. Dalla ricerca su COALESCE, ho avuto l'impressione che NULL sarebbe stato restituito se tutte le espressioni fossero NULL. Dato che non sono un esperto di SQL, presumo che mi manchi qualcosa, ma che cos'è .....
Grazie in anticipo per qualsiasi aiuto.
sto cercando di interpretare ciò che si sta dicendo in modo corretto. Penso che tu intenda quanto segue: come usi coalescenza per dire tutte le righe se null altrimenti solo le righe che corrispondono. In tal caso, farei qualcosa come COALESCE (@MiddleName, '') = '' OR @ MiddleName = [MiddleName] nella clausola where. – geoffrobinson