Wenn in einer Datenbank eine Tabelle erstellt wird, definiert die SQL-Anweisung zum Erstellen der Tabelle die Affinität, oder den Datentyp, für jede Spalte in der Tabelle. Auch wenn Affinitätsdeklarationen ausgelassen werden können, empfiehlt es sich doch, in
CREATE TABLE
-SQL-Anweisungen die Spaltenaffinität explizit anzugeben.
Als allgemeine Regel wird jedes Objekt, das Sie mit einer
INSERT
-Anweisung in einer Datenbank speichern, als Instanz desselben Datentyps zurückgegeben, wenn Sie eine
SELECT
-Anweisung ausführen. Der Datentyp des abgerufenen Werts kann jedoch je nach Affinität der Datenbankspalte, in der der Wert gespeichert ist, ein anderer sein. Wenn ein Wert in einer Spalte gespeichert wird, und sein Datentyp nicht mit der Affinität der Spalte übereinstimmt, versucht die Datenbank, den Wert zu konvertieren. Wurde eine Datenbankspalte zum Beispiel mit der Affinität
NUMERIC
definiert, versucht die Datenbank, eingefügte Daten in eine numerische Speicherklasse zu konvertieren (
INTEGER
oder
REAL
), bevor die Daten gespeichert werden. Wenn die Daten nicht konvertiert werden können, wird ein Fehler ausgegeben. Gemäß dieser Regel wird der String „12345“, wenn er in eine
NUMERIC
-Spalte eingefügt wird, von der Datenbank automatisch in den Ganzzahlwert 12345 konvertiert, bevor er in der Datenbank gespeichert wird. Wenn der Wert mit einer
SELECT
-Anweisung abgerufen wird, wird der Wert als Instanz eines numerischen Datentyps (zum Beispiel Number) zurückgegeben, nicht als String-Instanz.
Unerwünschte Datentypkonvertierungen lassen sich am besten mit der Einhaltung von zwei Regeln vermeiden. Zuerst sollten Sie jede Spalte mit einer Affinität definieren, die dem Datentyp der zu speichernden Daten entspricht. Fügen Sie zweitens nur Werte ein, deren Datentyp der definierten Affinität entspricht. Die Einhaltung dieser Regeln hat zwei Vorteile. Wenn Sie Daten einfügen, werden sie nicht konvertiert (wobei sie die beabsichtigte Bedeutung verlieren könnten). Außerdem werden Daten mit ihrem ursprünglichen Datentyp zurückgegeben, wenn Sie sie abrufen.
Weitere Informationen zu den verfügbaren Spaltenaffinitätstypen und zur Verwendung von Datentypen in SQL-Anweisungen finden Sie unter
Unterstützte Datentypen
.