NVARCHAR LÀ GÌ

  -  
ncharNAME _nvarcharNAME _ có thể tàng trữ ký trường đoản cú Unicode .

Bạn đang xem: Nvarchar là gì

charNAME _varcharNAME _ không thể lưu trữ các cam kết từ bỏ Unicode .charNAME _ cùng ncharNAME _ chiều lâu năm cố định vẫn không khí tàng trữ dự trữ cho số lượng cam kết trường đoản cú bạn chỉ định và hướng dẫn trong cả khi bạn không thực hiện không còn dung tích đó.varcharNAME _ với nvarcharNAME _ độ lâu năm phát triển thành đang chỉ áp dụng khoảng chừng Trắng các nhân vật dụng chúng ta tàng trữ. Nó sẽ không dự trữ bộ lưu trữ như charhoặc ncharname __ .

ncharvới nvarcharvẫn chiếm gấp hai dung lượng tàng trữ, vì vậy có thể là chí lý khi chỉ áp dụng bọn chúng nếu bạn nên Unicode .


795
6 thg 10, 2008Brian Kim
Tất cả các câu trả lời cho tới nay chỉ ra rằng varchar là byte đơn, nvarchar là byte knghiền. Phần thứ nhất thực thụ này dựa vào vào đối chiế nlỗi minh họa dưới.

DECLARE
T TABLE(C1 VARCHAR(20) COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS,C2 NVARCHAR(20)COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS)INSERT INTO
T VALUES (N"中华人民共和国",N"中华人民共和国"), (N"abc",N"abc");SELECT C1, C2, LEN(C1) AS , DATALENGTH(C1) AS , LEN(C2) AS , DATALENGTH(C2) AS FROM
T Trả về

*

Lưu ý rằng những cam kết từ 华 với 国 vẫn không được thể hiện trong phiên bản VARCHAR cùng được thay thế sửa chữa bằng âm thầm ?.

Thực tế vẫn không tồn tại cam kết trường đoản cú tiếng Hoa như thế nào rất có thể được lặp lại vì chưng một byte trong đối chiếu kia. Các ký kết trường đoản cú byte đối chọi độc nhất là cỗ tây điển hình nổi bật ASCII.

Do kia, có thể cnhát trường đoản cú cột nvarchar(X) vào cột varchar(X)ko thành công cùng với lỗi giảm nđính thêm (trong những số đó X biểu thị một trong những giống nhau trong cả nhị ngôi trường hợp).

Squốc lộ Server 2012 thêm những so sánh SC (Ký từ bửa sung) hỗ trợ UTF-16. Trong các so sánh này, một cam kết từ bỏ nvarchar hoàn toàn có thể mất 2 hoặc 4 byte.


88
23 thg 11, 2011Martin Smith
nchar cùng char vận động khá tương đương nhau Theo phong cách tựa như đồng nhất, cũng như nvarchar cùng varchar. Sự biệt lập độc nhất giữa chúng là nchar/nvarchar tàng trữ những cam kết từ bỏ Unicode (quan trọng nếu khách hàng trải đời thực hiện những bộ cam kết trường đoản cú msinh hoạt rộng) trong khi varchar thì không.

Vì các cam kết từ bỏ Unicode trải nghiệm tàng trữ nhiều hơn thế nữa, các trường nchar/nvarchar chiếm gấp đôi dung lượng (ví dụ: trong số phiên bản trước của SQL Server, size tối nhiều của trường nvarchar là 4000).

Xem thêm: Các Nước Nghèo Nhất Thế Giới Hiện Nay (Cập Nhật Năm 2021), Các Nước Nghèo Nhất Thế Giới

Câu hỏi này là 1 trong bạn dạng sao của câu hỏi này .


33
6 thg 10, 2008Luke Bennett
Chỉ cần thêm một cái nào đó nữa: nchar - thêm vệt cách vào tài liệu. nvarchar - ko thêm vết bí quyết vào tài liệu.

Vì vậy, nếu như khách hàng định thanh lọc tập dữ liệu của bản thân theo trường "nchar", chúng ta có thể muốn áp dụng RTRIM để xóa khoảng chừng White. Ví dụ. Trường nchar (10) được Điện thoại tư vấn là THƯƠNG HIỆU lưu trữ Word NIKE. Nó thêm 6 khoảng chừng White ngơi nghỉ mặt cần của Lời. Vì vậy, lúc lọc, biểu thức đề xuất đọc: RTRIM (Trường! Brand.Value "NIKE") ==

Hy vọng vấn đề đó để giúp đỡ được ai kia không tính tê vày tôi đang đề xuất đồ lộn cùng với nó một chút!


32
21 thg 7, 2011Dimuthu
Cố thế của tớ nhằm nắm tắt cùng sửa những câu trả lời hiện tại có:

Trước hết, char cùng nchar đang luôn luôn áp dụng một lượng không khí tàng trữ cố định và thắt chặt, trong cả Khi chuỗi được lưu trữ nhỏ tuổi rộng không khí tất cả sẵn, trong những khi đó varchar với nvarchar đang chỉ áp dụng nhiều dung tích lưu trữ đó. byte ngân sách, có lẽ nhằm lưu trữ độ lâu năm chuỗi). Vì vậy, hãy lưu giữ, "var" Tức là "biến", nlỗi trong không khí trở nên.

Điểm chính sản phẩm nhị đề nghị phát âm là, nchar cùng nvarchar tàng trữ chuỗi bằng phương pháp áp dụng thiết yếu xác hai byte cho từng cam kết tự, trong khi char cùng varchar sử dụng mã hóa được xác minh vì chưng trang mã so sánh, sẽ thường thường và đúng là một byte cho mỗi ký kết từ bỏ (tuy nhiên bao gồm ngôi trường vừa lòng ngoại lệ, coi bên dưới). Bằng phương pháp thực hiện hai byte cho từng ký trường đoản cú, một phạm vi ký từ rất rộng rất có thể được tàng trữ, vày vậy điều cơ phiên bản buộc phải lưu giữ ngơi nghỉ đó là nchar và nvarchar bao gồm Xu thế là chọn lựa giỏi rộng nhiều lúc bạn có nhu cầu hỗ trợ quốc tế hóa, điều mà bạn cũng có thể làm cho.

Bây giờ mang lại một trong những điểm giỏi hơn.

Trước tiên, các cột nchar cùng nvarcharalways tàng trữ dữ liệu bằng UCS-2. Điều này có nghĩa là đúng chuẩn nhị byte cho từng ký kết từ bỏ sẽ được sử dụng cùng ngẫu nhiên ký kết tự Unicode như thế nào vào Mặt phẳng đa ngôn từ cơ bản (BMP) hoàn toàn có thể được lưu trữ bởi vì trường nchar hoặc nvarchar. Tuy nhiên, chưa hẳn ngôi trường đúng theo nào any Ký từ Unicode có thể được tàng trữ. lấy ví dụ như, theo Wikipedia, các điểm mã cho chữ tượng hình Ai Cập nằm kế bên BMP.. Do kia, bao gồm các chuỗi Unicode có thể được màn biểu diễn trong UTF-8 cùng các bảng mã Unicode thực thụ không giống tất yêu được lưu trữ trong ngôi trường Squốc lộ Server nchar hoặc nvarchar với những chuỗi được viết bằng chữ tượng hình Ai Cập đã nằm trong số kia. May mắn là người tiêu dùng của chúng ta cũng có thể không viết theo kịch phiên bản đó, tuy nhiên kia là điều nên lưu ý!

Một điểm khó đọc tuy thế thú vui khác nhưng mà các áp phích khác sẽ nhấn mạnh là những ngôi trường char với varchar rất có thể thực hiện nhì byte cho từng ký từ bỏ đến một số trong những ký kết trường đoản cú nhất mực nếu trang mã đối chiếu hưởng thụ nó. (Martin Smith giới thiệu một ví dụ tuyệt vời và hoàn hảo nhất, trong số đó anh ấy cho thấy biện pháp Trung Quốc_Traditable_Stroke_Order_100_CS_AS_KS_WS biểu hiện hành động này. Hãy xem test.)

CẬP NHẬT: Kể tự SQL Server 2012, sau cùng cũng có trang mã đến UTF-16 , ví dụ Latin1_General_100_CI_AS_SC bao gồm tổng thể phạm vi Unicode.


nchar<(n)> (ký kết từ quốc gia)

Độ dài cố định nicode dữ liệu chuỗi.n khẳng định độ nhiều năm chuỗi với đề xuất là cực hiếm từ một mang lại 4.000.Kích thước tàng trữ là hai lần n byte.

nvarchar <(n | max)> (ký kết tự non sông không giống nhau.)

Độ dài biến nicode tài liệu chuỗi.n khẳng định độ lâu năm chuỗi cùng có thể là cực hiếm từ là một mang lại 4.000.max cho là size lưu trữ buổi tối nhiều là 2 ^ 31-1 byte (2 GB).Kích thước tàng trữ, tính bởi byte, gấp rất nhiều lần lần chiều dài thực của dữ liệu được nhập + 2 byte

char <(n)> (cam kết tự)

Dữ liệu chuỗi tất cả độ lâu năm cố định và thắt chặt, non-Unicode.n xác minh độ nhiều năm chuỗi và cần là cực hiếm từ 1 mang đến 8.000.Kích thước lưu trữ là n byte.

varchar <(n | max)> (biến hóa cam kết tự)

Độ lâu năm trở thành, chưa hẳn Unicode dữ liệu chuỗi.n khẳng định độ dài chuỗi với rất có thể là quý giá từ 1 mang đến 8.000.max cho rằng form size lưu trữ buổi tối nhiều là 2 ^ 3đơn byte (2 GB).Kích thước tàng trữ là chiều lâu năm thực tế của dữ liệu được nhập + 2 byte.
Sự biệt lập là:

n char lưu trữ unicode trong những khi char chỉ lưu trữ các ký kết từ bỏ byte solo.

Xem thêm: Tương Sinh Tương Hợp Là Gì ? Tương Vượng Là Gì? Tương Hợp Tương Vượng Là Gì

char thử dùng một vài ký kết từ bỏ cố định và thắt chặt gồm độ lâu năm đúng chuẩn trong những khi varchar chấp nhận số lượng cam kết từ thay đổi lên tới với bao gồm cả độ nhiều năm được xác định.

Một sự biệt lập khác là chiều dài. Cả nchar với nvarchar có thể lâu năm tới 4.000 ký kết tự. Và char với varchar rất có thể dài cho tới 8000 cam kết từ. Nhưng so với Squốc lộ Server, bạn cũng có thể sử dụng varchar (max) hoàn toàn có thể cách xử trí về tối đa 2.147.483.648 ký kết trường đoản cú. (Hai gigabyte, số ngulặng 4 byte đã ký.)