sql >> Databáze >  >> RDS >> Sqlserver

Jak uložit řetězec var větší než varchar (max)?

Vážně - VARCHAR(MAX) může uložit až 2 GB dat – nejen 8000 znaků......

Zkuste toto:

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)

Tím vrátíte hodnotu vyšší než 8000 znaků po 1000 iteracích.

Jde o to, že pokud používáte varchar(max) , musíte se ujistit, že vždy odesíláte všechny vaše řetězce na varchar(max) výslovně - jako jsem to udělal v tomto příkladu. V opačném případě se SQL Server vrátí k "běžnému" varchar zpracování, a to je skutečně omezeno na 8000 znaků....




  1. Chyba syntaxe php, neočekávaná T_VARIABLE, očekává se ',' nebo '' na řádku 29

  2. v postgres, můžete nastavit výchozí formátování pro časové razítko, podle relace nebo globálně?

  3. Vytvořte tabulku v SQLite

  4. Zálohujte uživatele MySQL