where isnull(name,'') <> ''
entspricht
where name is not null and name <> ''
was wiederum äquivalent zu
istwhere name <> ''
(wenn name IS NULL
dieser abschließende Ausdruck würde als unbekannt ausgewertet und die Zeile nicht zurückgegeben)
Die Verwendung des ISNULL
Muster führt zu einem Scan und ist weniger effizient, wie im folgenden Test zu sehen ist.
SELECT ca.[name],
[number],
[type],
[low],
[high],
[status]
INTO TestTable
FROM [master].[dbo].[spt_values]
CROSS APPLY (SELECT [name]
UNION ALL
SELECT ''
UNION ALL
SELECT NULL) ca
CREATE NONCLUSTERED INDEX IX_TestTable ON dbo.TestTable(name)
GO
SELECT name FROM TestTable WHERE isnull(name,'') <> ''
SELECT name FROM TestTable WHERE name is not null and name <> ''
/*Can be simplified to just WHERE name <> '' */
Das sollte Ihnen den Ausführungsplan geben, den Sie brauchen.