where isnull(name,'') <> ''
tương đương với
where name is not null and name <> ''
lần lượt tương đương với
where name <> ''
(nếu tên IS NULL
rằng biểu thức cuối cùng sẽ đánh giá là không xác định và hàng không được trả về)
Việc sử dụng ISNULL
sẽ dẫn đến việc quét và kém hiệu quả hơn như có thể thấy trong thử nghiệm bên dưới.
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 <> '' */
Điều này sẽ cung cấp cho bạn kế hoạch thực hiện mà bạn cần.