Nvarchar là gì

ncharNAME _ với nvarcharNAME _ rất có thể tàng trữ ký từ bỏ Unicode .

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

charNAME _ cùng varcharNAME _ cần thiết lưu trữ các ký kết từ Unicode .charNAME _ncharNAME _ chiều nhiều năm cố định và thắt chặt sẽ không khí tàng trữ dự trữ mang đến số lượng ký kết tự chúng ta hướng đẫn ngay cả khi bạn không sử dụng hết dung lượng kia.varcharNAME _ với nvarcharNAME _ độ nhiều năm biến đang chỉ thực hiện khoảng tầm trắng các nhân đồ vật bạn tàng trữ. Nó sẽ không còn dự trữ bộ nhớ như charhoặc ncharname __ .

ncharvà nvarcharđang chiếm gấp hai dung lượng tàng trữ, vị vậy có thể là khôn ngoan Lúc chỉ thực hiện bọn chúng nếu như khách hàng yêu cầu Unicode .


795
6 thg 10, 2008Brian Kim
Tất cả những câu vấn đáp cho đến bây giờ cho là varchar là byte đơn, nvarchar là byte kxay. Phần đầu tiên đích thực này phụ thuộc vào đối chiế như minch họa bên 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 ký từ bỏ 华 cùng 国 vẫn chưa được trình bày vào phiên phiên bản VARCHAR cùng được sửa chữa bởi lặng lẽ ?.

Thực tế vẫn không có ký kết trường đoản cú giờ Hoa nào rất có thể được lặp lại bởi một byte vào so sánh kia. Các ký kết tự byte solo tuyệt nhất là cỗ tây điển hình nổi bật ASCII.

Do đó, rất có thể cnhát tự 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 đó X biểu hiện một số như thể nhau vào cả nhì ngôi trường hợp).

SQL Server 2012 thêm các so sánh SC (Ký từ xẻ sung) cung cấp UTF-16. Trong các so sánh này, một cam kết tự nvarchar có thể mất 2 hoặc 4 byte.


88
23 thg 11, 2011Martin Smith
nchar và char chuyển động hơi tương đương nhau Theo phong cách tương tự như hệt nhau, tương tự như nvarchar với varchar. Sự khác biệt duy nhất thân chúng là nchar/nvarchar lưu trữ các ký tự Unicode (cần thiết nếu như khách hàng thưởng thức áp dụng những cỗ ký từ bỏ mnghỉ ngơi rộng) trong lúc varchar thì không.

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

Xem thêm: Event Được Yêu Thích " Thần Bài Liên Minh Huyền Thoại, Twisted Fate

Câu hỏi này là 1 trong những bản sao của thắc mắc này .


33
6 thg 10, 2008Luke Bennett
Chỉ bắt buộc thêm một chiếc nào đấy nữa: nchar - thêm vệt biện pháp vào tài liệu. nvarchar - không thêm vệt cách vào dữ liệu.

Vì vậy, nếu như khách hàng định lọc tập tài liệu của chính mình theo trường "nchar", bạn có thể muốn sử dụng RTRIM để xóa khoảng tầm trắng. lấy một 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 tầm White sống mặt yêu cầu của Lời. Vì vậy, lúc thanh lọc, biểu thức nên đọc: RTRIM (Trường! Brand.Value "NIKE") ==

Hy vọng vấn đề này để giúp được ai kia xung quanh kia vày tôi vẫn yêu cầu thứ lộn với nó một chút!


32
21 thg 7, 2011Dimuthu
Cố rứa của mình để bắt tắt cùng sửa những câu trả lời hiện có:

Thứ nhất, char cùng nchar vẫn luôn sử dụng một lượng không gian tàng trữ cố định và thắt chặt, ngay cả lúc chuỗi được tàng trữ nhỏ tuổi hơn không khí tất cả sẵn, trong những khi đó varchar cùng nvarchar đã chỉ áp dụng các dung lượng tàng trữ đó. byte chi phí, có lẽ rằng nhằm tàng trữ độ dài chuỗi). Vì vậy, hãy ghi nhớ, "var" có nghĩa là "biến", nhỏng vào không khí biến hóa.

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

Bây giờ đồng hồ mang đến một vài điểm tốt rộng.

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

Một điểm cực nhọc đọc dẫu vậy thú vị khác mà lại những áp phích khác vẫn nhấn mạnh vấn đề là các trường char và varchar hoàn toàn có thể thực hiện nhì byte cho mỗi ký kết từ cho một số trong những ký từ nhất mực nếu trang mã đối chiếu kinh nghiệm nó. (Martin Smith chỉ dẫn một ví dụ tuyệt vời và hoàn hảo nhất, trong đó anh ấy cho biết thêm biện pháp Trung Quốc_Traditable_Stroke_Order_100_CS_AS_KS_WS diễn đạt hành động này. Hãy coi demo.)

CẬP.. NHẬT: Kể tự SQL Server 2012, cuối cùng cũng có trang mã cho UTF-16 , ví dụ Latin1_General_100_CI_AS_SC bao gồm cục bộ phạm vi Unicode.


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

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

nvarchar <(n | max)> (ký kết từ bỏ giang sơn khác biệt.)

Độ lâu năm phát triển thành nicode dữ liệu chuỗi.n xác minh độ lâu năm chuỗi và rất có thể là giá trị từ 1 cho 4.000.max cho rằng form size tàng trữ buổi tối nhiều là 2 ^ 3đơn 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 lâu năm thực của tài liệu được nhập + 2 byte

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

Dữ liệu chuỗi tất cả độ nhiều năm cố định và thắt chặt, non-Unicode.n khẳng định độ lâu năm chuỗi cùng yêu cầu là quý giá từ 1 mang đến 8.000.Kích thước lưu trữ là n byte.

varchar <(n | max)> (thay đổi cam kết tự)

Độ dài trở thành, không hẳn Unicode tài liệu chuỗi.n xác định độ dài chuỗi cùng có thể là cực hiếm từ 1 cho 8.000.max chỉ ra rằng form size tàng trữ tối đa là 2 ^ 3đối chọi byte (2 GB).Kích thước lưu trữ là chiều lâu năm thực tiễn của dữ liệu được nhập + 2 byte.
Sự khác biệt là:

n char tàng trữ unicode trong những lúc char chỉ tàng trữ các ký kết trường đoản cú byte 1-1.

Xem thêm: Fhss Là Gì, Nghĩa Của Từ Fhss, Định Nghĩa Và Giải Thích Ý Nghĩa

char hưởng thụ một số ký từ bỏ thắt chặt và cố định tất cả độ nhiều năm đúng đắn trong những lúc varchar gật đầu số lượng ký từ bỏ biến hóa lên đến mức với bao hàm cả độ nhiều năm được khẳng định.

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


Chuyên mục: Hỏi Đáp