sql >> Databasteknik >  >> RDS >> Sqlserver

För Nvarchar(Max) får jag bara 4000 tecken i TSQL?

Du har deklarerat detta som nvarchar(max) vilket tillåter 2 GB data så att det kommer att lagra 2 GB.

Vad händer:

  • Datatypen är ännu inte nvarchar(max) förrän tilldelning till @sql1
  • Dessförinnan är det en samling strängar, var och en mindre än 4000 (konstanter)
  • Du sammanfogar korta konstanter med korta variabler (kort =<4000)
  • Du har alltså 4000 tecken inlagda i @sql1

Så du måste se till att du har nvarchar(max) på höger sida.

En idé. Den andra raden sammanfogar nvarchar(max) med en konstant =nvarchar(max)

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

Det är inte annorlunda än heltalsdivisionen som sker på alla språk.

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

Operatörsprioritet (härleder datatypprioritet) är alltid "tilldelning" sist... varför skulle unicode-strängar i SQL Server vara annorlunda?



  1. Använda tupler i SQL IN-sats

  2. Hur man uppdaterar primärnyckeln

  3. Hur man löser åtkomst nekad för användare 'root'@'localhost' (med lösenord:Ja) när du ansluter MySQL-databas

  4. Tips för att migrera från MySQL-replikering till MySQL Galera Cluster 4.0