Câu hỏi 1: 8000 nhân vật xuất hiện như thế nào và tôi nên biết về nó ở đâu?
Đặt n thành 8000 khiến 8000 ký tự xuất hiện. Bạn cần lưu ý các tài liệu tham khảo Chính xác, Tỷ lệ và Độ dài (Transact-SQL) về char, nchar, nvarchar và varchar. Ngược lại, việc đặt n thành max (không có dấu ngoặc kép) khiến SQL Server lưu trữ (và trả về) số byte tối đa (như được đề cập trong trích dẫn của bạn).
Câu hỏi 2: một truy vấn dữ liệu .net vào cột này sẽ luôn trả về kết quả đầy đủ với hơn 100 000 ký tự?
Đây là một câu hỏi .Net (không phải SQL Server), nhưng bộ dữ liệu .Net tìm nạp một luồng byte. Một byte không phải là ký tự và SQL Server trả về byte (không phải ký tự). Nếu n được đặt thành 8000 và loại dữ liệu là nvarchar, SQL Server trả về tối đa 8000 byte, mà bộ dữ liệu .Net có thể hiểu là 4000 ký tự Unicode. Nếu n được đặt thành 8000 và loại dữ liệu là varchar, SQL Server trả về tối đa 8000 byte, mà bộ dữ liệu .Net có thể hiểu là tối đa 8000 ký tự ANSI. Nếu n được đặt thành tối đa và loại dữ liệu là nvarchar, SQL Server trả về tối đa 2 ^ 31-1 byte, mà bộ dữ liệu .Net có thể hiểu là tối đa (2 ^ 31-1) / 2 ký tự. Nếu n được đặt thành tối đa và loại dữ liệu là varchar, SQL Server trả về tối đa 2 ^ 31-1 byte, mà bộ dữ liệu .Net có thể hiểu là tối đa 2 ^ 31-1 ký tự ANSI.
Nếu bạn chọn sử dụng char hoặc varchar (thay vì nchar hoặc nvarchar) vì chúng có thể lưu trữ nhiều "ký tự" hơn (chính xác hơn: byte), bạn cần lưu ý rằng nhiều ký tự Unicode không có ký tự ANSI tương đương (do đó là một phần lớn của chúng tôi Người dùng trên thế giới sẽ không thể thấy các ký tự được bản địa hóa / bản địa của họ trong ứng dụng của bạn).
varchar(max)
đã từng được gọitext
và được coi là một loại dữ liệu khác nhau.