Permítanme responder con algunas citas de la documentación de SQL Server.
Conversión de datos de caracteres
Entonces, su varchar se declara como varchar(1) , y la conversión implícita en su SET instrucción (desde un literal de cadena de longitud 3 a un varchar(1) ) trunca dog a d .