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

Làm cách nào để chèn hơn 8000 ký tự vào cột VARCHAR (MAX) bằng ExecuteNonQuery?

REPLICATE trả về kiểu đầu vào bất kể việc gán sau này. Thật khó chịu, nhưng để tránh bị cắt ngắn một cách im lặng, hãy thử:

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

Điều này là do SQL Server thực hiện REPLICATE hoạt động trước khi nó xem xét bạn đang gán nó cho cái gì hoặc bạn đang cố gắng mở rộng nó ra bao nhiêu ký tự. Nó chỉ quan tâm đến biểu thức đầu vào để xác định những gì nó sẽ trả về và nếu đầu vào không phải là loại tối đa, nó giả định rằng nó có nghĩa là vừa với 8.000 byte. Điều này được giải thích trong Sách Trực tuyến :



  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:làm thế nào để giới hạn quyền truy cập vào cột được mã hóa, ngay cả từ dba?

  2. Cơ sở dữ liệu không được cập nhật với phương thức Đính kèm

  3. CHỌN CHO TỰ ĐỘNG XML và trả về các kiểu dữ liệu

  4. 3 cách lấy danh sách cơ sở dữ liệu trong SQL Server (T-SQL)

  5. Chọn các cột từ một bảng dựa trên tên cột từ một bảng khác