Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso inserire più di 8000 caratteri in una colonna VARCHAR(MAX) con ExecuteNonQuery?

REPLICATE restituisce il tipo di input indipendentemente dall'assegnazione successiva. È fastidioso, ma per evitare il troncamento silenzioso, prova:

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

Questo perché SQL Server esegue REPLICATE operazione prima che consideri a cosa lo stai assegnando o quanti caratteri stai cercando di espanderlo. Si preoccupa solo dell'espressione di input per determinare cosa dovrebbe restituire e, se l'input non è un tipo max, presume che rientri in 8.000 byte. Questo è spiegato in Libri in linea :