sql >> Base de Datos >  >> RDS >> Sqlserver

Para Nvarchar (Max) ¿solo obtengo 4000 caracteres en TSQL?

Ha declarado esto como nvarchar (max) que permite 2 GB de datos, por lo que almacenará 2 GB.

Qué está pasando:

  • El tipo de datos aún no es nvarchar(max) hasta la asignación a @sql1
  • Antes de eso, es una colección de cadenas, cada una menos de 4000 (constantes)
  • Estás concatenando constantes cortas con variables cortas (cortas =<4000)
  • Así que tienes 4000 caracteres en @sql1

Por lo tanto, debe asegurarse de tener nvarchar(max) en el lado derecho.

Una idea. La segunda línea concatena nvarchar(max) con una constante =nvarchar(max)

SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
   ....

No es diferente a la división de enteros que ocurre en todos los idiomas.

declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right

La precedencia del operador (infiere la precedencia del tipo de datos) siempre es "asignación" en último lugar... ¿por qué las cadenas Unicode en SQL Server deberían ser diferentes?