Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Кога трябва да използваме NVARCHAR/NCHAR вместо VARCHAR/CHAR в SQL Server?

Истинската причина, поради която искате да използвате NVARCHAR, е, когато имате различно езици в една и съща колона, трябва да адресирате колоните в T-SQL без декодиране, искате да можете да виждате данните „нативно“ в SSMS или искате да стандартизирате в Unicode.

Ако третирате базата данни като глупаво хранилище, е напълно възможно да съхранявате широки низове и различни (дори с променлива дължина) кодиране във VARCHAR (например UTF-8). Проблемът идва, когато се опитвате да кодирате и декодирате, особено ако кодовата страница е различна за различните редове. Това също така означава, че SQL Server няма да може да се справя лесно с данните за целите на запитване в T-SQL на (потенциално променливо) кодирани колони.

Използването на NVARCHAR избягва всичко това.

Бих препоръчал NVARCHAR за всяка колона, в която ще има въведени от потребителя данни, които са относително неограничени.

Бих препоръчал VARCHAR за всяка колона, която е естествен ключ (като регистрационна табела на превозно средство, SSN, сериен номер, сервизен етикет, номер на поръчка, позивна на летището и т.н.), която обикновено е дефинирана и ограничена от стандарт или законодателство или конвенция. Също така VARCHAR за въведени от потребителя и много ограничени (като телефонен номер) или код (АКТИВЕН/ЗАТВОРЕН, Y/N, M/F, M/S/D/W и т.н.). Няма абсолютно никаква причина да използвате NVARCHAR за тях.

И така, за едно просто правило:

VARCHAR, когато е гарантирано, че е ограниченNVARCHAR в противен случай



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да автоматизирам задачата за генериране на скриптове в SQL Server Management Studio 2008?

  2. ExecuteReader изисква отворена и налична връзка. Текущото състояние на връзката е Свързване

  3. 10 факта за мониторинга на ефективността на базата данни, които могат да ви изненадат

  4. Магазинът за заявки на SQL Server

  5. Как да импортирам .bak файл на SQL Server в MySQL?