where isnull(name,'') <> ''
е еквивалентен на
where name is not null and name <> ''
което от своя страна е еквивалентно на
where name <> ''
(ако името IS NULL
този краен израз ще се изчисли като неизвестно и редът няма да бъде върнат)
Използването на ISNULL
ще доведе до сканиране и е по-малко ефективен, както може да се види в теста по-долу.
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 <> '' */
Което трябва да ви даде плана за изпълнение, от който се нуждаете.