sql >> Databáze >  >> RDS >> Sqlserver

Pro Nvarchar (Max) dostávám pouze 4000 znaků v TSQL?

Deklarovali jste to jako nvarchar (max), který umožňuje 2 GB dat, takže uloží 2 GB.

Co se děje:

  • Datový typ ještě není nvarchar(max) až do přiřazení na @sql1
  • Předtím je to sbírka řetězců, z nichž každý má méně než 4000 (konstanty)
  • Zřetězujete krátké konstanty s krátkými proměnnými (short =<4000)
  • Takže máte 4000 znaků vložených do @sql1

Takže se musíte ujistit, že máte nvarchar(max) na pravé straně.

Jeden nápad. 2. řádek zřetězí nvarchar(max) s konstantou =nvarchar(max)

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

Neliší se to od celočíselného dělení, které se děje v každém jazyce.

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

Priorita operátora (odvozuje prioritu datového typu) je vždy "přiřazení" poslední... proč by měly být řetězce unicode na SQL Serveru jiné?



  1. ClusterControl - Pokročilá správa zálohování - mariabackup Část I

  2. Funkce rozdělení v SQL Server 2008

  3. Datový kurz:Používání funkcí okna

  4. Případ použití pro sp_prepare / sp_prepexec