sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är skillnaden mellan varchar och nvarchar?

En nvarchar kolumn kan lagra alla Unicode-data. En varchar kolumnen är begränsad till en 8-bitars teckentabell. Vissa människor tror att varchar bör användas eftersom det tar mindre plats. Jag tror att detta inte är det korrekta svaret. Inkompatibilitet med teckentabell är en smärta, och Unicode är botemedlet mot teckentabellsproblem. Med billig disk och minne nuförtiden finns det egentligen ingen anledning att slösa tid på att slänga runt med teckentabeller längre.

Alla moderna operativsystem och utvecklingsplattformar använder Unicode internt. Genom att använda nvarchar snarare än varchar , kan du undvika att göra kodningskonverteringar varje gång du läser från eller skriver till databasen. Omvandlingar tar tid och är benägna att göra fel. Och återställning från konverteringsfel är ett icke-trivialt problem.

Om du använder en applikation som bara använder ASCII, skulle jag ändå rekommendera att använda Unicode i databasen. OS- och databassorteringsalgoritmerna kommer att fungera bättre med Unicode. Unicode undviker konverteringsproblem vid gränssnitt med andra system. Och du kommer att förbereda dig för framtiden. Och du kan alltid validera att dina data är begränsade till 7-bitars ASCII för vilket äldre system du än behöver underhålla, även när du drar nytta av några av fördelarna med full Unicode-lagring.



  1. Testar DML-satser för OLTP i minnet

  2. Infoga hela DataTable i databasen på en gång istället för rad för rad?

  3. SQL Server JSON_Modify, hur uppdaterar jag alla?

  4. Transaktionshantering med Django 1.6