Kiến thức chungLà gì?

Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server

Bạn đang xem: Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server tại ĐH KD & CN Hà Nội

ncharnavarsharcó thể giữ đăng nhập một mình Unicode .

Đang xem: Nvarchar là gì?

charKhông thể giữ chữ ký một mình Unicode .varshar charncharVâng chiều dài cố định sẽ lưu trữ dự trữ cho số ký tự bạn chỉ định Ngay cả khi bạn không sử dụng tất cả không gian đó.varsharnavarsharVâng chiều dài thay đổi Chỉ khoảng trắng sẽ được sử dụng cho các ký tự bạn đã lưu trữ. sẽ không sao lưu bộ nhớ như char hoặc nchar .

nchar và nvarchar chiếm gấp đôi dung lượng lưu trữ, vì vậy chúng chỉ nên được sử dụng nếu bạn cần hỗ trợ. Unicode .

– Nguồn Brian Kim
15
char và varchar không dùng để lưu trữ Unicode, mà là các kỹ thuật mã hóa đặc biệt và logic đặc biệt. Bạn vẫn có thể sử dụng các trường không hợp lệ. để lưu trữ unicode
– Wim Ten Brink
mười
Sự so sánh phụ thuộc vào việc liệu phiên bản n… có dung lượng gấp đôi so với câu trả lời của tôi hay không.
– Martin Smith
7
Ưu điểm của dịch vụ lưu trữ là gì?
– mlissner
4
Về điểm cuối cùng: sử dụng Unicode nchar và nvarchar vẫn tốt hơn trong hầu hết các trường hợp. so sánh tốt hơn Linh hoạt hơn cho người dùng Loại bỏ các vấn đề về khả năng tương thích trong tương lai và bên cạnh đó, bộ nhớ không phải là vấn đề trong trường hợp này. Bởi vì việc sử dụng đối chiếu mà không có Unicode sẽ rất có vấn đề và tốc độ bộ nhớ sẽ bị giảm trong tương lai.
– Jason Varghese
6
BenCaine char (20) sẽ chiếm 20 byte (giả sử so sánh 8 bit); varchar (20) sẽ sử dụng len (data) +2 byte, bằng 22 cho 20 byte dữ liệu, nhưng chỉ 12 cho 10 byte dữ liệu. Hai byte thừa là độ dài bản ghi. Nếu dữ liệu của bạn luôn có độ dài đầy đủ, hãy sử dụng char vì nó tiết kiệm dung lượng và có thể chạy nhanh hơn. Vui lòng không sử dụng varchar (1) hoặc bất kỳ thứ gì nhỏ hơn varchar (4). Một ký tự duy nhất ở định dạng varchar sử dụng ba byte, vì vậy char (3) sẽ không chiếm nhiều dung lượng hơn varchar (3).
– Richard Gadsden
95

Tất cả các câu trả lời cho đến nay, varchar là byte đơn, nvarchar là byte kép, phần đầu tiên của điều này dựa trên đối chiếu như minh họa bên dưới.

thông báo
Bảng (C1 VARCHAR (20) COLLATE Tiếng Trung_Truyền thống_Đơn_tục_tự_tự_100_CS_AS_KS_WS, C2 NVARCHAR (20) COLLATE Tiếng Trung_Truyền thống_Điều_kiện_100_CS_AS_KS_WS) CHÈN VÀO
T GIÁ TRỊ (N ”中华人民共和国”, N ”中华人民共和国”), (N ”abc”, N ”abc”); CHỌN C1, C2, LEN (C1) NHƯ DATALENGTH (C1) NHƯ LEN (C2) NHƯ DATALENGTH (C2) NHƯ từ
T trở lại

Lưu ý rằng các ký tự 华 và 国 không được hiển thị trong phiên bản VARCHAR và sẽ được thay thế bằng?

trong thực tế Không có ký tự Trung Quốc nào có thể được sao chép từng byte theo kiểu đó. Một ký tự byte đơn là một bộ ASCII điển hình của phương Tây.

Do đó, việc chèn từ một cột nvarchar (X) sang một cột varchar (X) khác có thể gặp lỗi cắt bớt (trong đó X đại diện cho cùng một số trong cả hai trường hợp).

SQL Server 2012 thêm đối chiếu SC (ký tự đặc biệt) hỗ trợ UTF-16. Trong các đối chiếu này, một ký tự nvarchar đơn có thể là 2 hoặc 4 byte.

CŨNG XEM: Tiết Lộ Cách Nấu Cháo Cá Hồi Ngon Cho Bé 8 Tháng Tuổi

– Nguồn gốc của Martin Smith
4
Tôi đang tìm kiếm loại câu trả lời nào? Ngoài ra, để tiết kiệm thời gian cho những người như tôi – văn bản không phải tiếng Anh có nghĩa là “Cộng hòa Nhân dân Trung Hoa” translate.google.com/#auto/en/…
– Biểu tượng
34

nchar và char hoạt động rất giống nhau. Giống như nvarchar và varchar, điểm khác biệt duy nhất giữa chúng là nchar / nvarchar lưu trữ các ký tự Unicode (bắt buộc nếu bạn muốn sử dụng các bộ ký tự mở rộng), trong khi varchar thì không.

Vì các ký tự Unicode yêu cầu nhiều dung lượng hơn, trường nchar / nvarchar do đó, chiếm gấp đôi dung lượng (như trong các phiên bản SQL Server trước đó Kích thước tối đa của trường nvarchar là 4000).

Câu hỏi này là một bản sao của câu hỏi này.

– Nguồn của Luke Bennett
3
Bạn quên một điều: nchar sử dụng độ dài cố định, vì vậy nchar (10) luôn yêu cầu mười ký tự và varchar (10) hoàn toàn là Unicode và sẽ chấp nhận bất kỳ số ký tự nào, tối đa là 10. Xem msDN.microsoft.com/en- us / library / ms186939.aspx.
– Wim Ten Brink
33

Chỉ để thêm một cái gì đó nữa: nchar – thêm khoảng trắng vào dữ liệunavarshar – Không thêm dấu cách vào dữ liệu.

Vì vậy, nếu bạn định lọc tập dữ liệu dựa trên trường “nchar”, bạn có thể muốn sử dụng RTRIM để loại bỏ khoảng trắng. Ví dụ: trường nchar (10) có tên BRAND lưu trữ từ NIKE bằng cách thêm 6 dấu cách vào quyền của từ. Do đó, khi lọc Biểu thức nên đọc: RTRIM (Field! BRAND.Value) = “NIKE”

Hy vọng điều này sẽ giúp ai đó vì tôi đang gặp khó khăn với nó!

– Nguồn Dimuthu
24

Tôi cố gắng tóm tắt và chỉnh sửa các câu trả lời hiện có:

Đầu tiên, char và nchar luôn sử dụng một lượng không gian lưu trữ cố định. Ngay cả khi chuỗi được lưu trữ nhỏ hơn dung lượng khả dụng, trong khi varchar và nvarchar sẽ chiếm nhiều dung lượng lưu trữ cần thiết để lưu trữ chuỗi đó (cộng thêm hai byte trên đầu nên lưu trữ độ dài của chuỗi). Hãy nhớ rằng “var” có nghĩa là “biến” như trong không gian biến.

Điểm chính thứ hai cần hiểu là nchar và nvarchar lưu trữ các chuỗi sử dụng chắc chắn hai byte cho mỗi ký tự, trong khi char và varchar sử dụng mã hóa được xác định bởi trang mã đối chiếu. thường xuyên sẽ chỉ là một byte cho mỗi ký tự. (mặc dù có ngoại lệ, xem bên dưới) bằng cách sử dụng hai byte cho mỗi ký tự. Có thể lưu trữ một số lượng lớn các ký tự Vì vậy, điều cơ bản cần ghi nhớ là nchar và nvarchar thường là lựa chọn tốt hơn nhiều khi bạn muốn hỗ trợ quốc tế hóa. bạn có thể làm gì

Bây giờ để có một điểm số tốt hơn

Xem thêm: Cảm ơn tiếng anh là gì? Nghĩa của từ: cống

cột nchar và nvarchar đầu tiên luôn luôn Dữ liệu được lưu trữ bằng UCS-2, có nghĩa là nó cần chính xác hai byte cho mỗi ký tự và bất kỳ ký tự Unicode nào trong Mặt phẳng đa ngôn ngữ Cơ bản (BMP) đều có thể được lưu trữ bởi trường nchar hoặc nvarchar. Tuy nhiên, không phải vậy. không tí nào cũng có thể giữ không tí nào Ký tự Unicode không tí nào . Ví dụ, theo Wikipedia Điểm mã cho chữ tượng hình nằm ngoài BMP, vì vậy có các chuỗi Unicode có thể được biểu diễn bằng UTF-8 và các bảng mã Unicode thực khác không thể được lưu trữ trong các trường nchar hoặc nvarchar của SQL Server và các chuỗi chữ tượng hình sẽ được bao gồm trong đó May mắn thay, người dùng của bạn có thể không phải đang viết kịch bản. Nhưng đó là điều cần ghi nhớ!

Một điểm khó hiểu nhưng thú vị khác mà các áp phích khác đã nhấn mạnh là các trường char và varchar có thể sử dụng hai byte mỗi ký tự cho một số ký tự. Nếu trang mã đối chiếu yêu cầu nó (Martin Smith là một ví dụ điển hình. mà anh ấy đã cho thấy China_Traditable_Stroke_Order_100_CS_AS_KS_WS Làm thế nào để bạn thể hiện hành vi này? Hãy xem.)

Cập nhật: Trong SQL Server 2012, cuối cùng có một trang mã cho UTF-16 chẳng hạn như Latin1_General_100_CI_AS_SC. có thể bao gồm toàn bộ phạm vi Unicode.

Xem thêm các bài viết trong chuyên mục này: Hỏi & Đáp

Thông tin cần xem thêm: Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server

Hình Ảnh về Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server

Video về Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server

Wiki về Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server

Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server

Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server -

ncharnavarsharcó thể giữ đăng nhập một mình Unicode .

Đang xem: Nvarchar là gì?

charKhông thể giữ chữ ký một mình Unicode .varshar charncharVâng chiều dài cố định sẽ lưu trữ dự trữ cho số ký tự bạn chỉ định Ngay cả khi bạn không sử dụng tất cả không gian đó.varsharnavarsharVâng chiều dài thay đổi Chỉ khoảng trắng sẽ được sử dụng cho các ký tự bạn đã lưu trữ. sẽ không sao lưu bộ nhớ như char hoặc nchar .

nchar và nvarchar chiếm gấp đôi dung lượng lưu trữ, vì vậy chúng chỉ nên được sử dụng nếu bạn cần hỗ trợ. Unicode .

- Nguồn Brian Kim
15
char và varchar không dùng để lưu trữ Unicode, mà là các kỹ thuật mã hóa đặc biệt và logic đặc biệt. Bạn vẫn có thể sử dụng các trường không hợp lệ. để lưu trữ unicode
- Wim Ten Brink
mười
Sự so sánh phụ thuộc vào việc liệu phiên bản n… có dung lượng gấp đôi so với câu trả lời của tôi hay không.
- Martin Smith
7
Ưu điểm của dịch vụ lưu trữ là gì?
- mlissner
4
Về điểm cuối cùng: sử dụng Unicode nchar và nvarchar vẫn tốt hơn trong hầu hết các trường hợp. so sánh tốt hơn Linh hoạt hơn cho người dùng Loại bỏ các vấn đề về khả năng tương thích trong tương lai và bên cạnh đó, bộ nhớ không phải là vấn đề trong trường hợp này. Bởi vì việc sử dụng đối chiếu mà không có Unicode sẽ rất có vấn đề và tốc độ bộ nhớ sẽ bị giảm trong tương lai.
- Jason Varghese
6
BenCaine char (20) sẽ chiếm 20 byte (giả sử so sánh 8 bit); varchar (20) sẽ sử dụng len (data) +2 byte, bằng 22 cho 20 byte dữ liệu, nhưng chỉ 12 cho 10 byte dữ liệu. Hai byte thừa là độ dài bản ghi. Nếu dữ liệu của bạn luôn có độ dài đầy đủ, hãy sử dụng char vì nó tiết kiệm dung lượng và có thể chạy nhanh hơn. Vui lòng không sử dụng varchar (1) hoặc bất kỳ thứ gì nhỏ hơn varchar (4). Một ký tự duy nhất ở định dạng varchar sử dụng ba byte, vì vậy char (3) sẽ không chiếm nhiều dung lượng hơn varchar (3).
- Richard Gadsden
95

Tất cả các câu trả lời cho đến nay, varchar là byte đơn, nvarchar là byte kép, phần đầu tiên của điều này dựa trên đối chiếu như minh họa bên dưới.

thông báo
Bảng (C1 VARCHAR (20) COLLATE Tiếng Trung_Truyền thống_Đơn_tục_tự_tự_100_CS_AS_KS_WS, C2 NVARCHAR (20) COLLATE Tiếng Trung_Truyền thống_Điều_kiện_100_CS_AS_KS_WS) CHÈN VÀO
T GIÁ TRỊ (N ”中华人民共和国”, N ”中华人民共和国”), (N ”abc”, N ”abc”); CHỌN C1, C2, LEN (C1) NHƯ DATALENGTH (C1) NHƯ LEN (C2) NHƯ DATALENGTH (C2) NHƯ từ
T trở lại

Lưu ý rằng các ký tự 华 và 国 không được hiển thị trong phiên bản VARCHAR và sẽ được thay thế bằng?

trong thực tế Không có ký tự Trung Quốc nào có thể được sao chép từng byte theo kiểu đó. Một ký tự byte đơn là một bộ ASCII điển hình của phương Tây.

Do đó, việc chèn từ một cột nvarchar (X) sang một cột varchar (X) khác có thể gặp lỗi cắt bớt (trong đó X đại diện cho cùng một số trong cả hai trường hợp).

SQL Server 2012 thêm đối chiếu SC (ký tự đặc biệt) hỗ trợ UTF-16. Trong các đối chiếu này, một ký tự nvarchar đơn có thể là 2 hoặc 4 byte.

CŨNG XEM: Tiết Lộ Cách Nấu Cháo Cá Hồi Ngon Cho Bé 8 Tháng Tuổi

- Nguồn gốc của Martin Smith
4
Tôi đang tìm kiếm loại câu trả lời nào? Ngoài ra, để tiết kiệm thời gian cho những người như tôi - văn bản không phải tiếng Anh có nghĩa là “Cộng hòa Nhân dân Trung Hoa” translate.google.com/#auto/en/…
- Biểu tượng
34

nchar và char hoạt động rất giống nhau. Giống như nvarchar và varchar, điểm khác biệt duy nhất giữa chúng là nchar / nvarchar lưu trữ các ký tự Unicode (bắt buộc nếu bạn muốn sử dụng các bộ ký tự mở rộng), trong khi varchar thì không.

Vì các ký tự Unicode yêu cầu nhiều dung lượng hơn, trường nchar / nvarchar do đó, chiếm gấp đôi dung lượng (như trong các phiên bản SQL Server trước đó Kích thước tối đa của trường nvarchar là 4000).

Câu hỏi này là một bản sao của câu hỏi này.

- Nguồn của Luke Bennett
3
Bạn quên một điều: nchar sử dụng độ dài cố định, vì vậy nchar (10) luôn yêu cầu mười ký tự và varchar (10) hoàn toàn là Unicode và sẽ chấp nhận bất kỳ số ký tự nào, tối đa là 10. Xem msDN.microsoft.com/en- us / library / ms186939.aspx.
- Wim Ten Brink
33

Chỉ để thêm một cái gì đó nữa: nchar - thêm khoảng trắng vào dữ liệunavarshar - Không thêm dấu cách vào dữ liệu.

Vì vậy, nếu bạn định lọc tập dữ liệu dựa trên trường "nchar", bạn có thể muốn sử dụng RTRIM để loại bỏ khoảng trắng. Ví dụ: trường nchar (10) có tên BRAND lưu trữ từ NIKE bằng cách thêm 6 dấu cách vào quyền của từ. Do đó, khi lọc Biểu thức nên đọc: RTRIM (Field! BRAND.Value) = “NIKE”

Hy vọng điều này sẽ giúp ai đó vì tôi đang gặp khó khăn với nó!

- Nguồn Dimuthu
24

Tôi cố gắng tóm tắt và chỉnh sửa các câu trả lời hiện có:

Đầu tiên, char và nchar luôn sử dụng một lượng không gian lưu trữ cố định. Ngay cả khi chuỗi được lưu trữ nhỏ hơn dung lượng khả dụng, trong khi varchar và nvarchar sẽ chiếm nhiều dung lượng lưu trữ cần thiết để lưu trữ chuỗi đó (cộng thêm hai byte trên đầu nên lưu trữ độ dài của chuỗi). Hãy nhớ rằng "var" có nghĩa là "biến" như trong không gian biến.

Điểm chính thứ hai cần hiểu là nchar và nvarchar lưu trữ các chuỗi sử dụng chắc chắn hai byte cho mỗi ký tự, trong khi char và varchar sử dụng mã hóa được xác định bởi trang mã đối chiếu. thường xuyên sẽ chỉ là một byte cho mỗi ký tự. (mặc dù có ngoại lệ, xem bên dưới) bằng cách sử dụng hai byte cho mỗi ký tự. Có thể lưu trữ một số lượng lớn các ký tự Vì vậy, điều cơ bản cần ghi nhớ là nchar và nvarchar thường là lựa chọn tốt hơn nhiều khi bạn muốn hỗ trợ quốc tế hóa. bạn có thể làm gì

Bây giờ để có một điểm số tốt hơn

Xem thêm: Cảm ơn tiếng anh là gì? Nghĩa của từ: cống

cột nchar và nvarchar đầu tiên luôn luôn Dữ liệu được lưu trữ bằng UCS-2, có nghĩa là nó cần chính xác hai byte cho mỗi ký tự và bất kỳ ký tự Unicode nào trong Mặt phẳng đa ngôn ngữ Cơ bản (BMP) đều có thể được lưu trữ bởi trường nchar hoặc nvarchar. Tuy nhiên, không phải vậy. không tí nào cũng có thể giữ không tí nào Ký tự Unicode không tí nào . Ví dụ, theo Wikipedia Điểm mã cho chữ tượng hình nằm ngoài BMP, vì vậy có các chuỗi Unicode có thể được biểu diễn bằng UTF-8 và các bảng mã Unicode thực khác không thể được lưu trữ trong các trường nchar hoặc nvarchar của SQL Server và các chuỗi chữ tượng hình sẽ được bao gồm trong đó May mắn thay, người dùng của bạn có thể không phải đang viết kịch bản. Nhưng đó là điều cần ghi nhớ!

Một điểm khó hiểu nhưng thú vị khác mà các áp phích khác đã nhấn mạnh là các trường char và varchar có thể sử dụng hai byte mỗi ký tự cho một số ký tự. Nếu trang mã đối chiếu yêu cầu nó (Martin Smith là một ví dụ điển hình. mà anh ấy đã cho thấy China_Traditable_Stroke_Order_100_CS_AS_KS_WS Làm thế nào để bạn thể hiện hành vi này? Hãy xem.)

Cập nhật: Trong SQL Server 2012, cuối cùng có một trang mã cho UTF-16 chẳng hạn như Latin1_General_100_CI_AS_SC. có thể bao gồm toàn bộ phạm vi Unicode.

Xem thêm các bài viết trong chuyên mục này: Hỏi & Đáp

[rule_{ruleNumber}]

Bạn thấy bài viết Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server có giải quyết đươc vấn đề bạn tìm hiểu không?, nếu  không hãy comment góp ý thêm về Sự Khác Biệt Giữa Char, Nchar, Varchar Và Nvarchar Là Gì ? Các Kiểu Dữ Liệu Trong Sql Server bên dưới để https://hubm.edu.vn/ có thể chỉnh sửa & cải thiện nội dung tốt hơn cho độc giả nhé! Cám ơn bạn đã ghé thăm Website ĐH KD & CN Hà Nội

Nguồn: ĐH KD & CN Hà Nội
Chuyên mục: Kiến thức chung

#Sự #Khác #Biệt #Giữa #Char #Nchar #Varchar #Và #Nvarchar #Là #Gì #Các #Kiểu #Dữ #Liệu #Trong #Sql #Server

Xem thêm bài viết hay:  Nhận định mã code là gì

ĐH KD & CN Hà Nội

Trường Đại học Quản lý và Kinh doanh Hà nội là một trường dân lập, thuộc Hội Khoa học Kinh tế Việt Nam, được phép thành lập theo Quyết định số 405/TTg, ngày 15/6/1996 của Thủ tướng Chính phủ. Trường chịu sự quản lý Nhà nước của Bộ Giáo dục và Đào tạo. Hệ thống văn bằng của Trường nằm trong hệ thống văn bằng quốc gia. Ngày 15/09/2006 Thủ tướng Chính phủ đã ra quyết định số 750/QĐ-TTg về việc đổi tên trường thành Đại học Kinh doanh và Công nghệ Hà Nội

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button