sql >> Database >  >> RDS >> Sqlserver

Hoe een string var groter dan varchar(max) op te slaan?

Serieus - VARCHAR(MAX) kan tot 2 GB aan gegevens opslaan - niet alleen 8000 tekens.....

Probeer dit:

DECLARE @myVar VARCHAR(MAX) = ''

DECLARE @ix INT = 1

WHILE @ix < 1000
BEGIN
    set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
    SET @ix = @ix + 1
END

SELECT DATALENGTH(@myvar)

Dit retourneert een waarde hoger dan 8000 tekens na 1000 herhalingen.

Het punt is:als je varchar(max) . gebruikt , moet je ervoor zorgen dat je altijd cast al je strings naar varchar(max) expliciet - zoals ik deed in dit voorbeeld. Anders zal SQL Server terugvallen op "gewone" varchar verwerking, en dat is inderdaad beperkt tot 8000 tekens....




  1. Laat automatisch ophogen het eerder verwijderde nummer vullen

  2. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

  3. Wijzigingen in de databasesessiecontext blijven bestaan ​​bij hergebruik van gepoolde verbindingen

  4. Maak een derde tafel van twee tabellen