gpt4 book ai didi

sql - isnull 与 is null

转载 作者:行者123 更新时间:2023-12-02 01:41:32 25 4
gpt4 key购买 nike

我注意到工作中和 SO 上的许多查询都使用以下形式的限制:

isnull(name,'') <> ''

人们这样做是否有特殊原因,而不是更简洁

name is not null

这是遗留问题还是性能问题?

最佳答案

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 <> '' */

这应该为您提供所需的执行计划。

enter image description here

关于sql - isnull 与 is null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com