看起来表达式中的第二个变量正在确定我的第一个变量的最大长度。
一个更容易解释的例子:
DECLARE @MyDest AS NVARCHAR(MAX) = 'Some long text, for testing';
DECLARE @MySrc AS NVARCHAR(6) = '';
SELECT @MyDest = ISNULL(NULLIF(@MySrc, N''), @MyDest);
SELECT @MyDest;
结果是'Some l'
我所期望'Some long text, for testing'
的。
这是我正在尝试修复的更复杂错误的简化版本。这是 SQL Server 中的错误还是我应该以不同的方式执行此操作?
它正在截断,因为 replacement_value 参数被转换为与 check_expression 相同的数据类型。
来自https://msdn.microsoft.com/en-us/library/ms184325.aspx