Deixe-me responder com algumas citações da documentação do SQL Server.
char e varchar
Conversão de dados de caracteres
Então, seu varchar é declarado como um
varchar(1)
, e a conversão implícita em seu SET
instrução (de uma string literal de comprimento 3 para um varchar(1)
) trunca dog
para d
.