Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der Unterschied zwischen varchar und nvarchar?

Ein nvarchar -Spalte kann beliebige Unicode-Daten speichern. Ein varchar Spalte ist auf eine 8-Bit-Codepage beschränkt. Einige Leute denken, dass varchar sollte verwendet werden, da es weniger Platz benötigt. Ich glaube, das ist nicht die richtige Antwort. Codepage-Inkompatibilitäten sind ein Ärgernis, und Unicode ist das Heilmittel für Codepage-Probleme. Mit billiger Festplatte und Speicher gibt es heutzutage wirklich keinen Grund mehr, Zeit mit Codepages herumzuspielen.

Alle modernen Betriebssysteme und Entwicklungsplattformen verwenden intern Unicode. Durch die Verwendung von nvarchar statt varchar , können Sie vermeiden, jedes Mal, wenn Sie aus der Datenbank lesen oder in die Datenbank schreiben, Codierungskonvertierungen durchzuführen. Konvertierungen brauchen Zeit und sind fehleranfällig. Und die Wiederherstellung nach Konvertierungsfehlern ist ein nicht triviales Problem.

Wenn Sie eine Schnittstelle mit einer Anwendung haben, die nur ASCII verwendet, würde ich dennoch die Verwendung von Unicode in der Datenbank empfehlen. Die Sortieralgorithmen des Betriebssystems und der Datenbank funktionieren besser mit Unicode. Unicode vermeidet Konvertierungsprobleme bei der Verbindung mit anderen Systeme. Und Sie bereiten sich auf die Zukunft vor. Und Sie können jederzeit überprüfen, ob Ihre Daten auf 7-Bit-ASCII beschränkt sind, unabhängig davon, welches Legacy-System Sie warten müssen, selbst wenn Sie einige der Vorteile der vollständigen Unicode-Speicherung nutzen.