Tag: "verschiedenes"

Suche funktioniert wieder

Posted on Okt 1, 2014 von in Vermischtes

Einigen wird vielleicht aufgefallen sein, dass die Suchbox auf InsideSQL.org in den letzten Tagen nicht wie erwartet funktioniert hat.

Ganze Geschichte »

1 Kommentar »

Die Bild Zeitung

Posted on Jun 22, 2012 von in Vermischtes

Zwar wohne ich nicht mehr in Deutschland, dennoch möchte ich die Gelegenheit nutzen, um auf etwas aufmerksam zu machen, das mal so ganz und gar nichts mit dem Hauptthema dieser Website zu tun hat.

Ganze Geschichte »

3 Kommentare »

Verschiedenes

Posted on Sep 7, 2005 von in SQL Server

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)

*****