2011-09-12 8 views
5

thể trùng lặp:
SQL Server Text type vs. varchar data type
Using varchar(MAX) vs TEXT on SQL ServerSQL 2008 - varchar (max) vs kiểu dữ liệu văn bản

từ bài viết này, có vẻ như cả hai đều có khả năng kích thước tương tự: http://msdn.microsoft.com/en-us/library/ms143432.aspx

thực sự chính xác? sự khác biệt thực sự là gì?

tôi chỉ cần di chuyển một số dữ liệu từ oracle (clob và biến nó thành một varchar (max), nhưng có vẻ như nó cắt ngắn một số giá trị dù sao, tôi nên sử dụng TEXT để thay thế?

Cảm ơn bạn!

+1

TEXT đang trở nên bị xóa - http://andrewm-developmentnotes.blogspot.com/2011/03/text-type-deprecated-in-sql-server-2008.html – StuartLC

+1

Chuỗi này có câu trả lời bạn đang tìm kiếm: http://stackoverflow.com/questions/564755/sql-server-text-type-vs-varchar-data-type – Icarus

+0

http://stackoverflow.com/questions/834788/using-varcharmax-vs-text-on- sql-server – NullUserException

Trả lời

11

không, bạn không nên sử dụng TEXT Thứ nhất, it has been deprecated since SQL Server 2005, và cũng có thể bạn sẽ thấy rằng nhiều chuỗi hoạt động không hiệu quả chống lại nó không sử dụng TEXT, NTEXT hoặc IMAGE ở tất cả -.. sử dụng VARCHAR(MAX), NVARCHAR(MAX) hoặc VARBINARY(MAX) thay

.
+0

Microsoft khốn kiếp. Tại sao họ không thể gắn bó với các công ước và sử dụng văn bản như MySQL và Postgres? –

+1

@Henley vì họ đã sử dụng văn bản và nó đã hút. Tại sao MySQL không thể theo tiêu chuẩn và sử dụng bù đắp/lấy thay vì crap giới hạn ngớ ngẩn này? Bùn bay cả hai chiều ... –

+0

không nếu có nhiều gió – shiggity

8

Các loại cũ (TEXT, NTEXT, IMAGE) không được chấp nhận và hỗ trợ cho chúng sẽ bị loại bỏ trong phiên bản tương lai của SQL Server.

Có sự khác biệt đáng kể về cách bạn sử dụng chúng. Các loại MAX mới hỗ trợ các cập nhật hiệu quả với cú pháp .WRITE. Các loại cũ có một bộ hàm phức tạp để đạt được cùng một (TEXTPTR, UPDATETEXT, sp_invalidate_testptr).

Các loại MAX mới có thể được sử dụng trong các chức năng như REPLACE hoặc SUBSTRING, bất kỳ chức năng nào chấp nhận VARCHAR(N) cũng sẽ chấp nhận VARCHAR(MAX).

Loại cũ không hỗ trợ chuyển đổi ngầm định mà loại MAX hỗ trợ, xem Data Type Conversions.

Một số tính năng của động cơ hoạt động với loại MAX, chứ không phải với các tính năng cũ, ví dụ: hoạt động trực tuyến (trong SQL 11 they support tables with BLOBs)

1

Bài viết được liên kết chỉ đề cập đến phân bổ không gian. Ở mức tối thiểu, biết rằng text, ntext and image data types will be removed from future releases of SQL Server vì vậy đối với các bảng mới, hãy sử dụng varchar (max), nvarchar (max) hoặc varbinary (max).

Có tầm quan trọng như nhau sẽ là cách tương tác với các giá trị đó. Bạn có muốn sử dụng cột tiêu chuẩn = 'giá trị thực sự dài' hoặc UPDATETEXT và các hoạt động ít phổ biến hơn để hoạt động trên một cột vì loại dữ liệu không?