Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Khi nào chúng ta phải sử dụng NVARCHAR / NCHAR thay vì VARCHAR / CHAR trong SQL Server?

Lý do thực sự bạn muốn sử dụng NVARCHAR là khi bạn có khác nhau ngôn ngữ trong cùng một cột, bạn cần giải quyết các cột trong T-SQL mà không cần giải mã, bạn muốn có thể xem dữ liệu "nguyên bản" trong SSMS hoặc bạn muốn chuẩn hóa trên Unicode.

Nếu bạn coi cơ sở dữ liệu là bộ lưu trữ câm, bạn hoàn toàn có thể lưu trữ các chuỗi rộng và các mã hóa khác nhau (thậm chí có độ dài thay đổi) trong VARCHAR (ví dụ:UTF-8). Vấn đề xảy ra khi bạn đang cố gắng mã hóa và giải mã, đặc biệt nếu trang mã khác nhau đối với các hàng khác nhau. Điều đó cũng có nghĩa là Máy chủ SQL sẽ không thể xử lý dữ liệu một cách dễ dàng cho các mục đích truy vấn trong T-SQL trên các cột được mã hóa (có thể thay đổi).

Sử dụng NVARCHAR tránh được tất cả những điều này.

Tôi muốn giới thiệu NVARCHAR cho bất kỳ cột nào có dữ liệu do người dùng nhập trong đó tương đối không bị giới hạn.

Tôi muốn giới thiệu VARCHAR cho bất kỳ cột nào là khóa tự nhiên (như biển số xe, SSN, số sê-ri, thẻ dịch vụ, số thứ tự, số hiệu sân bay, v.v.) thường được xác định và ràng buộc bởi tiêu chuẩn hoặc luật hoặc quy ước. Ngoài ra VARCHAR cho người dùng nhập và rất hạn chế (như số điện thoại) hoặc mã (ACTIVE / CLOSED, Y / N, M / F, M / S / D / W, v.v.). Hoàn toàn không có lý do gì để sử dụng NVARCHAR cho những việc đó.

Vì vậy, đối với một quy tắc đơn giản:

VARCHAR khi được đảm bảo sẽ bị ràng buộcNVARCHAR nếu không



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. HỒ SƠ THỐNG KÊ trong SQL Server là gì?

  2. SQL Server 2016

  3. Thực hiện lệnh Chèn và trả về Id đã chèn trong Sql

  4. Cơ sở dữ liệu có thể xử lý> 500 triệu hàng

  5. Khi nào / Tại sao sử dụng Cascading trong SQL Server?