Freigeben über


SQL-Datentypen

Jedes DBMS definiert seine eigenen SQL-Typen. Jeder ODBC-Treiber macht nur die SQL-Datentypen verfügbar, die vom zugeordneten DBMS definiert werden. Informationen dazu, wie ein Treiber DBMS-SQL-Typen den VON ODBC definierten SQL-Typbezeichnern zuordnet und wie ein Treiber DBMS-SQL-Typen seinen eigenen treiberspezifischen SQL-Typbezeichnern zuordnet, werden über einen Aufruf von SQLGetTypeInfo zurückgegeben. Ein Treiber gibt auch die SQL-Datentypen zurück, wenn die Datentypen von Spalten und Parametern durch Aufrufe von SQLColAttribute, SQLColumns, SQLDescribeCol, SQLDescribeParam, SQLProcedureColumns und SQLSpecialColumns beschrieben werden.

Hinweis

Die SQL-Datentypen sind in den Feldern SQL_DESC_ CONCISE_TYPE, SQL_DESC_TYPE und SQL_DESC_DATETIME_INTERVAL_CODE der Implementierungsdeskriptoren enthalten. Merkmale der SQL-Datentypen sind in den Feldern SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_LENGTH und SQL_DESC_OCTET_LENGTH der Implementierungsdeskriptoren enthalten. Weitere Informationen finden Sie weiter unten in diesem Anhang unter Datentypbezeichner und Deskriptoren .

Ein bestimmter Treiber und eine bestimmte Datenquelle unterstützen nicht unbedingt alle SQL-Datentypen, die in diesem Anhang definiert sind. Die Unterstützung eines Treibers für SQL-Datentypen hängt von der SQL-92-Ebene ab, die der Treiber erfüllt. Um die vom Treiber unterstützte Ebene der SQL-92-Grammatik zu bestimmen, ruft eine Anwendung SQLGetInfo mit dem SQL_SQL_CONFORMANCE Informationstyp auf. Darüber hinaus kann ein bestimmter Treiber und eine bestimmte Datenquelle zusätzliche treiberspezifische SQL-Datentypen unterstützen. Um zu bestimmen, welche Datentypen ein Treiber unterstützt, ruft eine Anwendung SQLGetTypeInfo auf. Informationen zu treiberspezifischen SQL-Datentypen finden Sie in der Dokumentation des Treibers. Informationen zu den Datentypen in einer bestimmten Datenquelle finden Sie in der Dokumentation für diese Datenquelle.

Wichtig

Die Tabellen in diesem Anhang sind nur Richtlinien und zeigen in der Regel verwendete Namen, Bereiche und Grenzwerte von SQL-Datentypen an. Eine bestimmte Datenquelle unterstützt möglicherweise nur einige der aufgeführten Datentypen, und die Merkmale der unterstützten Datentypen können sich von den aufgeführten unterscheiden.

In der folgenden Tabelle sind gültige SQL-Typbezeichner für alle SQL-Datentypen aufgeführt. Die Tabelle enthält auch den Namen und die Beschreibung des entsprechenden Datentyps aus SQL-92 (sofern vorhanden).

SQL-Typbezeichner[1] Typische SQL-Daten

typ[2]
Typische Typbeschreibung
SQL_CHAR CHAR(n) Zeichenfolge mit fester Zeichenfolgenlänge n.
SQL_VARCHAR VARCHAR(n) Zeichenfolge mit variabler Länge mit der maximalen Zeichenfolgenlänge n.
SQL_LONGVARCHAR LONG VARCHAR Zeichendaten mit variabler Länge. Die maximale Länge ist datenquellenabhängig. [9]
SQL_WCHAR WCHAR(n) Unicode-Zeichenfolge mit fester Zeichenfolgenlänge n
SQL_WVARCHAR VARWCHAR(n) Unicode-Zeichenfolge mit variabler Länge mit einer maximalen Zeichenfolgenlänge n
SQL_WLONGVARCHAR LONGWVARCHAR Daten mit Unicode-Zeichen von variabler Länge. Die maximale Länge ist datenquellenabhängig.
SQL_DECIMAL DECIMAL(p,s) Signierter, exakter numerischer Wert mit einer Genauigkeit von mindestens p und Skalierung s. (Die maximale Genauigkeit ist treiberdefiniert.) (1 <= p<= 15; s< = p). [4]
SQL_NUMERIC NUMERIC(p,s) Signierter, exakter, numerischer Wert mit der Genauigkeit p und Skalierung s (1 <= p<= 15; s< = p). [4]
SQL_SMALLINT SMALLINT Exakter numerischer Wert mit Genauigkeit 5 und Skalierung 0 (signiert: -32.768 <= n<= 32.767, ohne Vorzeichen: 0 <= n<= 65.535)[3].
SQL_INTEGER INTEGER Exakter numerischer Wert mit genauigkeit 10 und skalierung 0 (vorzeichen: -2[31] <= n<= 2[31] - 1, ohne Vorzeichen: 0 <= n<= 2[32] - 1)[3].
SQL_REAL REAL Signierter, ungefährer numerischer Wert mit binärer Genauigkeit 24 (null oder absoluter Wert 10[-38] bis 10[38]).
SQL_FLOAT FLOAT(p) Signierter, ungefährer, numerischer Wert mit einer binären Genauigkeit von mindestens p. (Die maximale Genauigkeit ist treiberdefiniert.) [5]
SQL_DOUBLE DOUBLE PRECISION Signierter, ungefährer, numerischer Wert mit binärer Genauigkeit 53 (null oder absoluter Wert 10[-308] bis 10[308]).
SQL_BIT BIT Einzelbit-Binärdaten. [8]
SQL_TINYINT TINYINT Exakter numerischer Wert mit Genauigkeit 3 und Skalierung 0 (signiert: -128 <= n<= 127, ohne Vorzeichen: 0 <= n<= 255)[3].
SQL_BIGINT bigint Exakter numerischer Wert mit der Genauigkeit 19 (bei Vorzeichen) oder 20 (ohne Vorzeichen) und Skalierung 0 (signiert: -2[63] <= n<= 2[63] - 1, ohne Vorzeichen: 0 <= n<= 2[64] - 1)[3],[9].
SQL_BINARY BINARY(n) Binärdaten mit fester Länge n. [9]
SQL_VARBINARY VARBINARY(n) Binärdaten mit variabler Länge mit der maximalen Länge n. Das Maximum wird vom Benutzer festgelegt. [9]
SQL_LONGVARBINARY LONG VARBINARY Binäre Daten mit variabler Länge. Die maximale Länge ist datenquellenabhängig. [9]
SQL_TYPE_DATE[6] DATE Jahres-, Monats- und Tagesfelder, die den Regeln des gregorianischen Kalenders entsprechen. (Siehe Einschränkungen des gregorianischen Kalenders weiter unten in diesem Anhang.)
SQL_TYPE_TIME[6] TIME(p) Stunden-, Minuten- und Sekundenfelder mit gültigen Werten für Stunden von 00 bis 23, gültigen Werten für Minuten von 00 bis 59 und gültigen Werten für Sekunden von 00 bis 61. Genauigkeit p gibt die Sekundengenauigkeit an.
SQL_TYPE_TIMESTAMP[6] TIMESTAMP(p) Jahres-, Monats-, Tag-, Stunden-, Minuten- und zweite Felder mit gültigen Werten, die für die Datentypen DATE und TIME definiert sind.
SQL_TYPE_UTCDATETIME UTCDATETIME Jahres-, Monats-, Tag-, Stunden-, Minuten-, Second-, utchour- und utcminute-Felder. Die Felder utchour und utcminute haben eine Genauigkeit von 1/10 Mikrosekunden.
SQL_TYPE_UTCTIME UTCTIME Die Felder Hour, Minute, Second, utchour und utcminute. Die Felder utchour und utcminute haben eine Genauigkeit von 1/10 Mikrosekunden..
SQL_INTERVAL_MONTH[7] INTERVAL MONTH(p) Anzahl der Monate zwischen zwei Datumsangaben; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_YEAR[7] INTERVAL YEAR(p) Anzahl der Jahre zwischen zwei Datumsangaben; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_YEAR_TO_MONTH[7] INTERVAL YEAR(p) TO MONTH Anzahl der Jahre und Monate zwischen zwei Datumsangaben; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_DAY[7] INTERVAL DAY(p) Anzahl der Tage zwischen zwei Datumsangaben; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_HOUR[7] INTERVAL HOUR(p) Anzahl der Stunden zwischen zwei Datums-/Uhrzeiten; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_MINUTE[7] INTERVAL MINUTE(p) Anzahl der Minuten zwischen zwei Datums-/Uhrzeiten; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_SECOND[7] INTERVAL SECOND(p,q) Anzahl der Sekunden zwischen zwei Datums-/Uhrzeiten; p ist die Intervallführungsgenauigkeit und q die Sekundengenauigkeit des Intervalls.
SQL_INTERVAL_DAY_TO_HOUR[7] INTERVAL DAY(p) TO HOUR Anzahl der Tage/Stunden zwischen zwei Datums-/Uhrzeiten; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_DAY_TO_MINUTE[7] INTERVAL DAY(p) TO MINUTE Anzahl der Tage/Stunden/Minuten zwischen zwei Datums-/Uhrzeiten; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_DAY_TO_SECOND[7] INTERVAL DAY(p) TO SECOND(q) Anzahl der Tage/Stunden/Minuten/Sekunden zwischen zwei Datums-/Uhrzeiten; p ist die Intervallführungsgenauigkeit und q die Sekundengenauigkeit des Intervalls.
SQL_INTERVAL_HOUR_TO_MINUTE[7] INTERVAL HOUR(p) TO MINUTE Anzahl der Stunden/Minuten zwischen zwei Datums-/Uhrzeiten; p ist die intervallführende Genauigkeit.
SQL_INTERVAL_HOUR_TO_SECOND[7] INTERVAL HOUR(p) TO SECOND(q) Anzahl von Stunden/Minuten/Sekunden zwischen zwei Datums-/Uhrzeiten; p ist die Intervallführungsgenauigkeit und q die Sekundengenauigkeit des Intervalls.
SQL_INTERVAL_MINUTE_TO_SECOND[7] INTERVAL MINUTE(p) TO SECOND(q) Anzahl von Minuten/Sekunden zwischen zwei Datums-/Uhrzeiten; p ist die Intervallführungsgenauigkeit und q die Sekundengenauigkeit des Intervalls.
SQL_GUID GUID GUID mit fester Länge.

[1] Dies ist der Wert, der in der Spalte DATA_TYPE durch einen Aufruf von SQLGetTypeInfo zurückgegeben wird.

[2] Dies ist der Wert, der in der Spalte NAME und CREATE PARAMS durch einen Aufruf von SQLGetTypeInfo zurückgegeben wird. Die NAME-Spalte gibt die Bezeichnung zurück, z. B. CHAR, während die CREATE PARAMS-Spalte eine durch Trennzeichen getrennte Liste von Erstellungsparametern wie Genauigkeit, Skalierung und Länge zurückgibt.

[3] Eine Anwendung verwendet SQLGetTypeInfo oder SQLColAttribute , um zu bestimmen, ob ein bestimmter Datentyp oder eine bestimmte Spalte in einem Resultset nicht signiert ist.

[4] SQL_DECIMAL und SQL_NUMERIC Datentypen unterscheiden sich nur in ihrer Genauigkeit. Die Genauigkeit eines DECIMAL(p,s) ist eine implementierungsdefinierte Dezimalgenauigkeit, die nicht kleiner als p ist, während die Genauigkeit eines NUMERIC(p,s) genau gleich p ist.

[5] Je nach Implementierung kann die Genauigkeit von SQL_FLOAT entweder 24 oder 53 sein: Bei 24 ist der SQL_FLOAT Datentyp identisch mit SQL_REAL; wenn es 53 ist, ist der SQL_FLOAT Datentyp mit SQL_DOUBLE identisch.

[6] In ODBC 3.x sind die SQL-Datentypen Datum, Uhrzeit und Zeitstempel SQL_TYPE_DATE, SQL_TYPE_TIME bzw. SQL_TYPE_TIMESTAMP; in ODBC 2.x sind die Datentypen SQL_DATE, SQL_TIME und SQL_TIMESTAMP.

[7] Weitere Informationen zu den Intervall-SQL-Datentypen finden Sie weiter unten in diesem Anhang im Abschnitt Intervalldatentypen .

[8] Der SQL_BIT Datentyp weist andere Merkmale auf als der BIT-Typ in SQL-92.

[9] Dieser Datentyp hat keinen entsprechenden Datentyp in SQL-92.

In diesem Abschnitt finden Sie das folgende Beispiel.