sql >> Databasteknik >  >> RDS >> Sqlserver

Hur lagrar man en sträng var större än varchar(max)?

Seriöst - VARCHAR(MAX) kan lagra upp till 2 GB data - inte bara 8000 tecken.....

Prova detta:

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)

Detta returnerar ett värde högre än 8000 tecken efter 1000 iterationer.

Poängen är:om du använder varchar(max) måste du se till att alltid casta alla dina strängar till varchar(max) uttryckligen - som jag gjorde i det här exemplet. Annars kommer SQL Server att falla tillbaka till "vanlig" varchar bearbetning, och det är verkligen begränsat till 8000 tecken....




  1. Postgresql trunkerat tabell med främmande nyckel begränsning

  2. Ta bort DEFINER-satsen från MySQL Dumps

  3. Använder min JDBC-anslutning till databasen SSL eller inte?

  4. Mysql-fråga som returnerar resurs-id #8 istället för önskat värde