COALESCE()和ISNULL(,'')之间的实际区别是什么?
在SQL连接中避免使用NULL值时,哪一个最好使用?
谢谢!
COALESCE()和ISNULL(,'')之间的实际区别是什么?
在SQL连接中避免使用NULL值时,哪一个最好使用?
谢谢!
来源:BOL
COALESCE
仅是CASE
表达式的一种简写方式,这意味着优化器会将其重写为使用CASE
。 - Lamak主要的区别在于,COALESCE
是 ANSI-标准,所以您也可以在其他 RDBMS 中找到它,另一个区别是您可以给 COALESCE
提供一个整个值列表以进行检查,而对于 ISNULL
,您只能传递一个值。
ISNULL
是一个函数,它仅被评估一次。如上所述,COALESCE
表达式的输入值可以被多次评估。 COALESCE
基本上转换为CASE
表达式,而ISNULL
是数据库引擎中内置的实现。
COALESCE()
可以有多个输入,它会按顺序评估每一个输入,直到找到一个非空的值,例如 COALESCE(Col1, Col2, Col3, 'N/A')
。微软推荐使用这个函数而不是 ISNULL()
。
ISNULL()
只能有一个输入,但已经被证明比 COALESCE 稍微快一点。
ISNULL
接受两个参数,COALESCE
可以接受n
个参数,具体使用哪个取决于 SQL Server 的版本和需求。 - T I