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

Jak mogę wstawić więcej niż 8000 znaków w kolumnie VARCHAR(MAX) za pomocą ExecuteNonQuery?

REPLICATE zwraca typ wejścia niezależnie od późniejszego przypisania. To denerwujące, ale aby uniknąć cichego obcinania, spróbuj:

SET @x = REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 10000);

Dzieje się tak, ponieważ SQL Server wykonuje REPLICATE operacja, zanim weźmie pod uwagę, do czego ją przypisujesz lub do ilu znaków próbujesz ją rozszerzyć. Dba tylko o wyrażenie wejściowe, aby określić, co powinno zwrócić, a jeśli dane wejściowe nie są typem max, zakłada, że ​​mają zmieścić się w 8000 bajtów. Jest to wyjaśnione w Books Online :



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pętla SSIS ForEach - zmiana połączenia wewnątrz pętli for

  2. Uzyskaj bieżący identyfikator logowania w SQL Server (T-SQL)

  3. Laravel:Wygenerowany SQL zgłasza błąd tylko w określonych tabelach

  4. Błąd konwersji podczas konwersji „nvarchar” na „datetime” w serwerze sql

  5. Używanie merge..output do uzyskania mapowania między source.id i target.id