Parece que uma segunda variável em uma expressão está determinando o comprimento máximo da minha primeira variável.
Um exemplo é mais fácil de explicar:
DECLARE @MyDest AS NVARCHAR(MAX) = 'Some long text, for testing';
DECLARE @MySrc AS NVARCHAR(6) = '';
SELECT @MyDest = ISNULL(NULLIF(@MySrc, N''), @MyDest);
SELECT @MyDest;
O resultado é 'Some l'
enquanto eu esperaria 'Some long text, for testing'
.
Esta é uma versão simplificada de um bug mais complicado que estou tentando corrigir. Isso é um bug no servidor SQL ou devo fazer isso de maneira diferente?
Ele está truncando porque o parâmetro replace_value está sendo convertido para o mesmo tipo de dados que check_expression.
De https://msdn.microsoft.com/en-us/library/ms184325.aspx