Databases Reference
In-Depth Information
Es würde als Ergebnis der Berechnung z. B. 1000 herauskom-
men, da aber nur drei Vor- und zwei Nachkommastellen zur
Verfügung stehen, kann das Ergebnis nicht in die Tabelle einge-
tragen werden.
Bei FLOAT , REAL und DOUBLE PRECISION handelt es sich um
Fließkommazahlen, die sehr hohe Werte annehmen können,
allerdings gegebenenfalls viele Stellen abschneiden. Dies wird
mit folgendem SQL-Skript verdeutlicht.
FLOAT
REAL
CREATE TABLE Typtest2(
Nummer Integer,
r REAL,
PRIMARY KEY (Nummer)
);
INSERT INTO TYPtest2 VALUES (1,999.99);
INSERT INTO TYPtest2 VALUES (2,-9999.99);
UPDATE Typtest2
SET r=r+1E24;
UPDATE Typtest2
SET r=r-1E24;
SELECT * FROM Typtest2
DOUBLE PRE-
CISION
Die Ausgabe ist:
NUMMER R
---------- ----------
1 0
2 0
Dabei steht 1E24 für 1*10 24 . Die kleinen Werte sind bei der Ad-
dition und nachfolgenden Subtraktion des gleichen Wertes ver-
loren gegangen. Dies könnte z. B. dann ärgerlich sein, wenn
irrtümlich ein sehr hoher Betrag auf ein „kleines“ Gehaltskonto
überwiesen und schnell wieder abgebucht wird. Kleine Konto-
inhalte gehen verloren. Aus diesem Grund ist die vorher er-
wähnte Maßnahme, genau über den Datentyp bei Geldbeträgen
nachzudenken, sehr wichtig.
Als Datentypen für Texte stehen CHAR(q) und VARCHAR(q)
zur Verfügung. Dabei gibt q die genaue bzw. maximale Anzahl
von Zeichen an. Größere Texte können nicht aufgenommen
werden. Bei CHAR werden intern immer q Zeichen, bei
VARCHAR werden nur die Zeichen des tatsächlich eingetragenen
Textes abgespeichert. CHAR ist in der Regel schneller in der
Verarbeitung, kann aber wesentlich mehr Speicherplatz bean-
spruchen, was dann unter anderem auch die Verarbeitungszeit
wieder negativ beeinflussen kann.
Ungenauigkeit
beim Rechnen
CHAR
VARCHAR
129
Search WWH ::




Custom Search