Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đối với Nvarchar (Max), tôi chỉ nhận được 4000 ký tự trong TSQL?

Bạn đã khai báo điều này là nvarchar (max) cho phép 2GB dữ liệu nên nó sẽ lưu trữ 2GB.

Điều gì đang xảy ra:

  • Kiểu dữ liệu chưa phải là nvarchar (max) cho đến khi ấn định thành @ sql1
  • Trước đó, đó là một tập hợp các chuỗi, mỗi chuỗi nhỏ hơn 4000 (hằng số)
  • Bạn đang nối các hằng số ngắn với các biến ngắn (short =<4000)
  • Vì vậy, bạn có 4000 ký tự được đưa vào @ sql1

Vì vậy, bạn phải đảm bảo rằng bạn có nvarchar (max) ở phía bên tay phải.

Một ý tưởng. Dòng thứ 2 nối nvarchar (max) với hằng =nvarchar (max)

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

Nó không khác gì phép chia số nguyên xảy ra trong mọi ngôn ngữ.

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

Ưu tiên toán tử (ưu tiên kiểu dữ liệu) luôn là "gán" sau cùng ... tại sao các chuỗi unicode trong SQL Server lại phải khác?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mục đích của bảng hệ thống master..spt_values ​​là gì và ý nghĩa của các giá trị của nó là gì?

  2. Cách mã hóa một thủ tục được lưu trữ trong SQL Server

  3. Tôi có thực sự cần sử dụng SET XACT_ABORT ON không?

  4. Nhật ký giao dịch SQL Server, Phần 3:Khái niệm cơ bản về ghi nhật ký

  5. Cách thêm tệp nhật ký vào cơ sở dữ liệu máy chủ SQL (T-SQL)