Besonderheiten char/varchar und nchar/nvarchar in MS-SQL

In MS-SQL gibt es zwei Datentypen die nahezu identisch sind:

char & varchar beziehungsweise nchar & nvarchar

Der einzige Unterschied zwischen char und varchar liegt darin, dass der char-Typ den kompletten Speicher in der Zeile reserviert., wo hingegen der varchar das ganze dynamisch macht.

Beispiel:
Char(255) würde exakt 255 Zeichen in der Zeile reservieren. Es ist egal ob da nur 1 oder 200 Zeichen drin stehen – der Rest wird mit blanks ausgefüllt, was natürlich unnötig Plattenkapazität in Anspruch nimmt.

Beim Suchen oder bei der Ausgabe müssen dann die Blanks wieder getrimmt werden bzw. like %ICHSUCHE% Abfragen durchgeführt werden. Dies geht auf natürlich auf Kosten der Performance.

Varchar(255) würde nur so viele Zeichen reservieren wie der String tatsächlich lang ist. Das ist schön, denn: weniger Speicherverbrauch & bessere und schnellere Suchabfragen

Gleiches gilt übrigens auch analog für binary & varbinary!