Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dla Nvarchar(Max) otrzymuję tylko 4000 znaków w TSQL?

Zadeklarowałeś to jako nvarchar(max), co pozwala na 2 GB danych, więc będzie przechowywać 2 GB.

Co się dzieje:

  • Typ danych nie jest jeszcze nvarchar(max) do przypisania do @sql1
  • Wcześniej jest to zbiór ciągów, każdy mniejszy niż 4000 (stałe)
  • Łączysz krótkie stałe z krótkimi zmiennymi (krótkie =<4000)
  • Więc masz 4000 znaków umieszczonych w @sql1

Więc upewnij się, że masz nvarchar(max) po prawej stronie.

Jeden pomysł. Druga linia łączy nvarchar(max) ze stałą =nvarchar(max)

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

Nie różni się to od dzielenia liczb całkowitych, które ma miejsce w każdym języku.

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

Pierwszeństwo operatorów (wnioskuje pierwszeństwo typu danych) jest zawsze „przypisaniem” jako ostatnie... dlaczego ciągi Unicode w SQL Server miałyby być inne?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server SP — parametr przekazania dla listy tablicy IN?

  2. Jak znaleźć sumę wielu kolumn w tabeli w SQL Server 2005?

  3. Dynamiczny SQL a procedura składowana

  4. SQL Server:przekonwertuj ((int)rok,(int)miesiąc,(int)dzień) na Datetime

  5. Uruchamianie pakietu SSIS przy użyciu dtexec