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

SQL Server 2012:giới hạn SQL động (> 4000 ký tự) (tách)

Bạn không cần phải chia văn bản thành nhiều phần. Bạn cần đảm bảo rằng việc cắt ngắn không xảy ra khi bạn đang nối các chuỗi :

Vì vậy, hãy đảm bảo rằng phép nối đầu tiên đang hoạt động với kiểu giá trị lớn (và do đó tạo ra kiểu giá trị lớn là kết quả của nó) và mọi phép nối tiếp theo phải được lưu khỏi kiểu cắt bớt:

set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...

(Bằng cách này, bạn không phải chèn chuyển đổi ở mọi nơi )

Điều này tạo ra lỗi:

declare @t nvarchar(max)

set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'

exec sp_executesql @t

Và điều này tạo ra kết quả 9000:

declare @t nvarchar(max)

set @t = CONVERT(nvarchar(max),'select LEN(''') + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'

exec sp_executesql @t


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhập dữ liệu từ .csv trong SQL Server bằng PowerShell?

  2. Loại bỏ các ràng buộc không tên

  3. Kế hoạch thực thi chế độ xem được phân vùng

  4. 2 Cách Kiểm tra xem Truy cập Dữ liệu có được Bật trong SQL Server hay không (Ví dụ T-SQL)

  5. sự khác biệt giữa hằng số hex và hằng số thập phân trong máy chủ SQL