Verschiedenes

Wenn man Tabellen erstellt, Variablen deklariert oder andere Sachen macht, bei denen man mit Datentypen in Berührung kommt, sollte man stets präzise den Untertypen angegeben, den man verwenden möchte. Hier bringt es nichts ein Lazycoder zu sein, der ein paar Tastaturanschläge sparen will.

Beispiel 1: Wenn man eine VARCHAR Variable der Länge 10 deklarieren möchte, gibt man an

DECLARE @MyVar VARCHAR(10)

und nicht

DECLARE @MyVar VARCHAR

SQL Server nimmt standardmässig eine Länge von 1 für Zeichenfolgen, sofern man nicht explizit die Länge vorgibt. SQL Server schneidet ferner die Daten ab, ohne eine Warnung auszugeben:

DECLARE @MyVar VARCHAR
SET @MyVar = 'AB' 
SELECT @MyVar AS Only_one_character

Only_one_character 
------------------ 
A

(1 row(s) affected)

Beispiel 2: Man möchte eine Variable vom Typ DECIMAL mit einer Precision von 8 und Scale von 2 deklarieren.

DECLARE MyVar DECIMAL(8,2)

Schreibt man hingegen

DECLARE @MyVar DECIMAL

unterstellt SQL Server hier den Datentyp DECIMAL(18,0).

DECLARE @MyVar DECIMAL
SET @MyVar = 123456789012345678
SELECT @MyVar
                     
-------------------- 
123456789012345678

(1 row(s) affected)

Im Unterschied jedoch zu Zeichenfolgen, generiert SQL Server eine Warnung, falls der Wert zu groß ist, um in einen DECIMAL(18,0) zu passen

DECLARE @MyVar DECIMAL
SET @MyVar = 1234567890123456789
SELECT @MyVar

Server: Msg 8115, Level 16, State 8, Line 2
Arithmetic overflow error converting numeric to data type numeric.
                     
-------------------- 
NULL

(1 row(s) affected)

*****

Noch kein Feedback
Einen Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.
SchlechtExzellent
(Zeilenumbrüche werden zu <br />)
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)
Trackback-Adresse für diesen Eintrag
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)