Saa*_*ail 1 sql t-sql sql-server sql-server-2000 coalesce
我有以下SQL查询:
select AuditStatusId
from dbo.ABC_AuditStatus
where coalesce(AuditFrequency, 0) <> 0
Run Code Online (Sandbox Code Playgroud)
我正在努力理解它.它看起来很简单,我知道coalesce运算符的作用(或多或少),但似乎没有得到意义.
除了上面的查询之外,如果不知道任何其他信息,您认为这意味着什么?
Mar*_*ith 13
select AuditStatusId
from dbo.ABC_AuditStatus
where AuditFrequency <> 0 and AuditFrequency is not null
Run Code Online (Sandbox Code Playgroud)
请注意,使用Coalesce意味着无法正确使用索引来满足此查询.
COALESCE是ANSI标准函数,用于处理NULL值,方法是返回基于逗号分隔列表的第一个非NULL值.这个:
WHERE COALESCE(AuditFrequency, 0) != 0
Run Code Online (Sandbox Code Playgroud)
..意味着如果列为AuditFrequencyNULL,则将值转换为零.否则,AuditFrequency返回值.
由于比较不返回AuditFrequency列值为零的行,AuditFrequency因此查询也将忽略其中为NULL的行.