Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è la differenza tra varchar e nvarchar?

Un nvarchar colonna può memorizzare qualsiasi dato Unicode. Un varchar la colonna è limitata a una codepage a 8 bit. Alcune persone pensano che varchar dovrebbe essere utilizzato perché occupa meno spazio. Credo che questa non sia la risposta corretta. Le incompatibilità con le codepage sono una seccatura e Unicode è la cura per i problemi di codepage. Con disco e memoria a basso costo al giorno d'oggi, non c'è più motivo di perdere tempo a smanettare con le codepage.

Tutti i moderni sistemi operativi e piattaforme di sviluppo utilizzano Unicode internamente. Usando nvarchar anziché varchar , puoi evitare di eseguire conversioni di codifica ogni volta che leggi o scrivi nel database. Le conversioni richiedono tempo e sono soggette a errori. E il recupero dagli errori di conversione è un problema non banale.

Se ti stai interfacciando con un'applicazione che utilizza solo ASCII, consiglierei comunque di utilizzare Unicode nel database. Gli algoritmi di confronto del sistema operativo e del database funzioneranno meglio con Unicode. Unicode evita problemi di conversione quando si interfaccia con altro sistemi. E ti preparerai per il futuro. E puoi sempre verificare che i tuoi dati siano limitati all'ASCII a 7 bit per qualsiasi sistema legacy che devi mantenere, anche godendo di alcuni dei vantaggi dell'archiviazione Unicode completa.