sql >> Database teknologi >  >> RDS >> Sqlserver

For Nvarchar(Max) får jeg kun 4000 tegn i TSQL?

Du har erklæret dette som nvarchar(max), hvilket tillader 2 GB data, så det vil gemme 2 GB.

Hvad sker der:

  • Datatypen er endnu ikke nvarchar(max) før tildeling til @sql1
  • Før det er det en samling strenge, hver på mindre end 4000 (konstanter)
  • Du sammenkæder korte konstanter med korte variabler (kort =<4000)
  • Så du har 4000 tegn indsat i @sql1

Så du skal sørge for at have nvarchar(max) på højre side.

En idé. Den anden linje sammenkæder nvarchar(max) med en konstant =nvarchar(max)

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

Det er ikke anderledes end heltalsdelingen, der sker på alle sprog.

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

Operatørprioritet (udleder datatypeprioritet) er altid "tildeling" sidst... hvorfor skulle unicode-strenge i SQL Server være anderledes?



  1. Brug af Microsoft DiskSpd til at teste dit lagerundersystem

  2. Sådan får du den aktuelle dato og tid med tidszoneforskydning i PostgreSQL

  3. værdien er for lang til typetegn varierende (N)

  4. Brug af Transaction ROLLBACK i SQL Server