sql >> Databasteknik >  >> RDS >> Sqlserver

När måste vi använda NVARCHAR/NCHAR istället för VARCHAR/CHAR i SQL Server?

Den verkliga anledningen till att du vill använda NVARCHAR är när du har annorlunda språk i samma kolumn, måste du adressera kolumnerna i T-SQL utan avkodning, du vill kunna se data "nativet" i SSMS, eller så vill du standardisera på Unicode.

Om du behandlar databasen som dum lagring är det fullt möjligt att lagra breda strängar och olika (även variabel längd) kodningar i VARCHAR (till exempel UTF-8). Problemet kommer när du försöker koda och avkoda, särskilt om teckentabellen är olika för olika rader. Det betyder också att SQL-servern inte kommer att kunna hantera data enkelt i syfte att söka i T-SQL på (potentiellt variabelt) kodade kolumner.

Att använda NVARCHAR undviker allt detta.

Jag skulle rekommendera NVARCHAR för alla kolumner som kommer att ha användarinmatade data som är relativt obegränsade.

Jag skulle rekommendera VARCHAR för alla kolumner som är en naturlig nyckel (som ett fordons registreringsskylt, SSN, serienummer, serviceetikett, ordernummer, flygplatsanropssignal, etc) som vanligtvis definieras och begränsas av en standard eller lagstiftning eller konvention. Även VARCHAR för användarinmatade och mycket begränsade (som ett telefonnummer) eller en kod (AKTIV/STÄNGD, J/N, M/F, M/S/D/W, etc). Det finns absolut ingen anledning att använda NVARCHAR för dessa.

Så för en enkel regel:

VARCHAR när det garanteras begränsas NVARCHAR annars



  1. Ändra MySQL standardteckenuppsättning till UTF-8 i my.cnf?

  2. Hur man hittar EBS R12 komponenter Version

  3. Hur man skapar en tabell från en annan tabell i SQL

  4. Hur håller data inte sorteras?