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

Làm thế nào để lưu trữ một chuỗi var lớn hơn varchar (max)?

Nghiêm túc - VARCHAR(MAX) có thể lưu trữ tới 2 GB dữ liệu - không chỉ 8000 ký tự .....

Hãy thử điều này:

DECLARE @myVar VARCHAR(MAX) = ''

DECLARE @ix INT = 1

WHILE @ix < 1000
BEGIN
    set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
    SET @ix = @ix + 1
END

SELECT DATALENGTH(@myvar)

Điều này sẽ trả về giá trị cao hơn hơn 8000 ký tự sau 1000 lần lặp.

Vấn đề là:nếu bạn đang sử dụng varchar(max) , bạn cần đảm bảo luôn truyền tất cả các chuỗi của bạn thành varchar(max) rõ ràng - như tôi đã làm trong ví dụ này. Nếu không, SQL Server sẽ trở về "thông thường" varchar xử lý và con số đó thực sự bị giới hạn ở 8000 ký 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. Chạy SQL Server 2014 trên máy ảo Azure

  2. Điều gì đang chặn Chọn top 1 * từ TableName với (nolock) trả về kết quả?

  3. classNotFoundException trong việc tải trình điều khiển JDBC

  4. Lấy hàng cuối cùng thứ hai chỉ với một lựa chọn trong SQL Server?

  5. Isoweek trong SQL Server 2005