Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Para Nvarchar (Max) estou recebendo apenas 4000 caracteres no TSQL?


Você declarou isso como nvarchar(max) que permite 2 GB de dados para armazenar 2 GB.

O que está acontecendo:
  • O tipo de dados ainda não é nvarchar(max) até atribuição para @sql1
  • Antes disso, é uma coleção de strings, cada uma com menos de 4.000 (constantes)
  • Você está concatenando constantes curtas com variáveis ​​curtas (short =<4000)
  • Então você tem 4.000 caracteres colocados em @sql1

Portanto, certifique-se de ter nvarchar(max) no lado direito.

Uma ideia. A 2ª linha concatena nvarchar(max) com uma constante =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
   ....

Não é diferente da divisão de inteiros que acontece em todos os idiomas.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right

A precedência do operador (infere a precedência do tipo de dados) é sempre a "atribuição" por último... por que as strings unicode no SQL Server devem ser diferentes?