Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie kann ich mit ExecuteNonQuery mehr als 8000 Zeichen in eine VARCHAR(MAX)-Spalte einfügen?

REPLICATE gibt unabhängig von der späteren Zuweisung den Eingangstyp zurück. Es ist ärgerlich, aber um ein stilles Abschneiden zu vermeiden, versuchen Sie Folgendes:

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

Dies liegt daran, dass SQL Server das REPLICATE ausführt Operation, bevor es berücksichtigt, was Sie ihm zuweisen oder auf wie viele Zeichen Sie es erweitern möchten. Es kümmert sich nur um den Eingabeausdruck, um zu bestimmen, was zurückgegeben werden soll, und wenn die Eingabe kein Max-Typ ist, geht es davon aus, dass sie in 8.000 Byte passen soll. Dies wird in Books Online erklärt :