Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je insérer plus de 8000 caractères dans une colonne VARCHAR(MAX) avec ExecuteNonQuery ?

REPLICATE renvoie le type d'entrée indépendamment de l'affectation ultérieure. C'est ennuyeux, mais pour éviter la troncature silencieuse, essayez :

SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);

C'est parce que SQL Server effectue le REPLICATE opération avant de considérer ce à quoi vous l'assignez ou le nombre de caractères que vous essayez de développer. Il ne se soucie que de l'expression d'entrée pour déterminer ce qu'il doit renvoyer, et si l'entrée n'est pas un type max, il suppose qu'il est censé tenir dans 8 000 octets. Ceci est expliqué dans Livres en ligne :