Reset the identity key for a column in SQL Server

Sometimes you need to reset an identity column value back to 0 (after inserting test-data and deleting the rows again for example). Of course, generally you shouldn’t change primary keys and of course primary key values doesn’t matter at all, but for the case you want to start with an new idenity 1 for the first row then simply use:

DBCC CHECKIDENT('YOURTABLENAME', RESEED, 0)

Trim-Funktionen in SQL Server 2005/2008

Zumindest wenn man mit dem SQL Server von Microsoft als Datenbank arbeitet, gibt es einen kleinen Fallstrick hinsichtlich nicht vorhandener TRIM()-Funktion. Diese in fast allen Sprachen implementierte und oft benutzte Standard-Funktion gibt es nämlich ärgerlicherweise einfach nicht (Stand SQL Server 2005/2008). Es gibt nur die beiden Funktionen LTRIM() und RTRIM(), die eben die leading beziehungsweise die trailing spaces entfernen. Es wird also Lösung empfohlen beide Funktionen zu benutzen, schön ist natürlich aber was anderes:

LTRIM(RTRIM(string))

Einen Feature-Request dazu gibt es schon. Alternativ dazu gibt es unter http://sqltrim.codeplex.com/ eine angepasste Funktion, um TRIM() benutzen zu können, ist für SQL Server 2005/2008 benutzbar.

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!