SQL Server过程中的IsNull的作用



我已经在SQL Server存储过程中编写了以下更新语句。

IsNull在这里做什么?

Update [dbo].[Images]
set ImageName = IsNull(@ImageName, ImageName), ItemId = IsNull(@ItemId, ItemId)  
where TypeId = @TypeId;

我对数据库的东西相当陌生。

它与COALESCE的相似之处在于,如果第一个参数是NULL,它将返回第二个参数的值。

在某些情况下,您必须小心使用ISNULL,因为如果第一个参数值的类型定义为更小,它可能会截断第二个参数值。例如:

DECLARE @val1 CHAR(1);
DECLARE @val2 CHAR(2) = 'AB';
SELECT ISNULL(@val1,@val2); -- Returns 'A', not 'AB'
SELECT COALESCE(@val1,@val2); -- Returns 'AB'