Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да съхраня низ var по-голям от varchar(max)?

Сериозно - VARCHAR(MAX) може да съхранява до 2 GB данни - не само 8000 знака.....

Опитайте това:

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)

Това ще върне стойност по-висока от 8000 знака след 1000 повторения.

Въпросът е:ако използвате varchar(max) , трябва да се уверите, че винаги каствате всичките ви низове към varchar(max) изрично - както направих в този пример. В противен случай SQL Server ще се върне към "обикновен" varchar обработка и това наистина е ограничено до 8000 знака....




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Нуждаете се от заявка за свързване на уникален родител с дете, което не е уникално, но може да бъде направено уникално с MAX

  2. Създаване на дървовидна заявка от таблица с числово съпоставяне в SQL (специфичен формат)

  3. Прескачане/игнориране на дублирани редове при вмъкване

  4. Показва основен/запис по подразбиране в базата данни

  5. Заявка за данни в дървовидна структура в SQL Server